gpt4 book ai didi

linux - 使用 linux 日期获取下一次发生的时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:15 26 4
gpt4 key购买 nike

Linux date实用程序可以理解很多字符串,例如:

$ date -d '8:30'
Fri Jan 2 08:30:00 CET 2015

我正在寻找获得下一个 8:30 的方法,因此:

  • 如果是 Fri Jan 2之前8:30 , 返回上面的结果;
  • 否则它应该打印Sat Jan 3 08:30:00 CET 2015 .

如你所见next 8:30没有得出正确答案:

$ date -d 'next 8:30'
date: invalid date ‘next 8:30’

是否有一个表达式可以计算这个?

自己在 shell 中处理它当然是一种选择,但由于 夏令时 法规等原因,事情变得更加复杂。

如果时钟适应夏令时,next 8:30应该解析为 8:30根据第二天的设置。

测试用例:

鉴于它是 Fri Jan 2 12:01:01 CET 2015 ,结果应该是:

$ date -d 'next 8:30'
Sat Jan 3 08:30:00 CET 2015

$ date -d 'next 15:30'
Fri Jan 2 15:30:00 CET 2015

最佳答案

只需使用类似的东西:

if [[ $(date -d '8:30 today' +%s) -lt $(date +%s) ]] ; then
next830="$(date -d '8:30 tomorrow')"
else
next830="$(date -d '8:30 today')"
fi

%s 格式字符串为您提供自纪元以来的秒数,因此 if 语句基本上是:

if 8:30-today is before now:
use 8:30-tomorrow
else
use 8:30-today

关于linux - 使用 linux 日期获取下一次发生的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com