使用linux日期获取下一次发生的时间
Linux使用linux日期获取下一次发生的时间,linux,date,Linux,Date,Linuxdate实用程序可以理解许多字符串,例如: $ date -d '8:30' Fri Jan 2 08:30:00 CET 2015 我正在寻找一种方法来获得下一个8:30,因此: 如果在8:30之前是1月2日星期五,则应返回上述结果 否则,它应该打印2015年1月3日星期六08:30:00 CET 可以看出下一个8:30不会得到正确的答案: $ date -d 'next 8:30' date: invalid date ‘next 8:30’ 有没有一个表达式可以计算这个
date
实用程序可以理解许多字符串,例如:
$ date -d '8:30'
Fri Jan 2 08:30:00 CET 2015
我正在寻找一种方法来获得下一个8:30
,因此:
- 如果在
之前是8:30
,则应返回上述结果李>1月2日星期五
- 否则,它应该打印
2015年1月3日星期六08:30:00 CET
下一个8:30
不会得到正确的答案:
$ date -d 'next 8:30'
date: invalid date ‘next 8:30’
有没有一个表达式可以计算这个
当然,在shell中自己处理它是一种选择,但由于夏时制的规定等原因,使事情变得更加复杂
如果时钟适应夏令时,则应根据第二天的设置将next 8:30
解析为8:30
测试用例:
鉴于时间为2015年1月2日星期五12:01:01 CET,结果应为:
$ 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
只需使用以下内容:
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
只需使用以下内容:
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
只需使用以下内容:
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
我进行了研究,但似乎不可能这样做 您可能要做的是将小时和分钟与
830
进行比较,并相应地打印:
[ $(date '+%H%M') -le 830 ] && date -d '8:30' || date -d '8:30 + 1 day'
如果您想轻松地处理此问题,请创建一个函数来执行这些计算
试验
我进行了研究,但似乎不可能这样做 您可能要做的是将小时和分钟与
830
进行比较,并相应地打印:
[ $(date '+%H%M') -le 830 ] && date -d '8:30' || date -d '8:30 + 1 day'
如果您想轻松地处理此问题,请创建一个函数来执行这些计算
试验
我进行了研究,但似乎不可能这样做 您可能要做的是将小时和分钟与
830
进行比较,并相应地打印:
[ $(date '+%H%M') -le 830 ] && date -d '8:30' || date -d '8:30 + 1 day'
如果您想轻松地处理此问题,请创建一个函数来执行这些计算
试验
我进行了研究,但似乎不可能这样做 您可能要做的是将小时和分钟与
830
进行比较,并相应地打印:
[ $(date '+%H%M') -le 830 ] && date -d '8:30' || date -d '8:30 + 1 day'
如果您想轻松地处理此问题,请创建一个函数来执行这些计算
试验