2016-10-01 77 views
3

我有一个像7:00:00这样的时间戳,意思是7am。在shell中计算15分钟

我想写一个简短的命令,返回06:45:00,或简单地06:45,最好使用date命令,以便我可以避免长的shell脚本。你有没有优雅的解决方案?

我也在寻找24h格式。例如,12:00:00 - 15分钟= 11:45:00。

+1

您想如何处理夏令时?例如:如果时间戳是“02:05:00”,那么“02:50”是否有效? – ruakh

回答

5

随着GNU date,使用7:00:00 AM - 15 minutesd(​​)字符串:

% date -d '7:00:00 AM - 15 minutes' '+%H:%M' 
06:45 

+%H:%M设置输出格式HH:MM

+0

@kensaii'%H'显示24小时格式化小时,使用'date -d'7:00:00 PM - 15分钟'+%H:%M''测试 – heemayl

+0

谢谢。其实我知道,但我的意思是输入是24小时格式。像18:00:00而不是6:00:00 pm。你的代码运行良好,但我不能在下午时间运行。感谢您的答复! – kensaii

1

在BSD变体上日期有一个-v标志,可用于获取当前时间戳并显示正向或负向调整的结果。

这将要从当前时间减去15分钟:

date -v -15M