2016-06-10 106 views
1

我有每15分钟处理一次数据的计时任务(12:00,12:15等)。我需要一个bash函数/脚本,它决定了直到下一个处理周期相对于当前时间。如果当前时间=“15:09:00 2016” ,则下一个处理周期将是360秒。有任何想法吗?谢谢。使用bash计算时间(以秒为单位)

+0

怎么样'日期-D“+ 6分钟”' –

回答

3

获取秒当前时刻从unix新纪元

$ now=$(date +%s) 

然后计算该值模900(900秒是15分钟),减去从900

$ echo $((900 - now % 900)) 
+0

我要张贴类似的东西,但在时区被抓了起来 - 要知道那个时代是UTC,如果你在一些奇怪的时区是,并使用类似3600秒的东西来代替,你可能会关闭。但是对于大多数情况来说,这已经够好了。 – rrauenza

+0

不错。要查找*下一个* 15分钟时间:'date -d“@ $((now = $(date +%s),now +(900-now%900)))”+%H:%M' –

+0

谢谢!两种方法都有效! –

1

date命令允许在-d --date选项之后提供日期。 date也理解相对日期(例如+ 6 min,+3 days等)。因此,如果您需要知道未来几分钟的时间,您可以简单地使用date -d "+ 6 min"来查找确切的时间。例如

$ date 
Fri Jun 10 15:22:45 CDT 2016 

$ date -d "+ 6 min" 
Fri Jun 10 15:28:47 CDT 2016 
+0

我认为这只能由GNU date支持 – andlrc

+0

是的,那是GNU coreutils提供的'date'。好点子。 –

相关问题