使用bash脚本以每小时循环打印日期

Fan*_*Fox 2 bash ubuntu date

我想写一个bash脚本,用以下格式打印出日期:

20120205_16
(year)(month)(day)_(24 hour)
Run Code Online (Sandbox Code Playgroud)

所以在当前日期执行此操作的命令是:

date +'20%y%m%d_%H'
Run Code Online (Sandbox Code Playgroud)

我想做的是打印从指定日期到另一个日期的这样的日期(使用for循环或其他东西).例如:

20120205_16 -> 20120305_18 would be:

20120205_16
20120205_17
20120205_18
...
20120305_17
20120305_18
Run Code Online (Sandbox Code Playgroud)

显然,这里的两个硬位是指定日期并按小时递增.

是否可以使用日期或其他方法轻松完成此操作?

Mic*_*rny 5

首先,您time_t使用以下%s格式获取值:

start=$(date --date '5 feb 2012 16:00' +%s)
stop=$(date --date '5 mar 2012 18:00' +%s)
Run Code Online (Sandbox Code Playgroud)

这些以秒表示.您可以对其值使用for循环,将它们增加1小时(3600秒):

for t in $(seq ${start} 3600 ${stop})
do
    date --date @${t} +'%Y%m%d_%H'
done
Run Code Online (Sandbox Code Playgroud)

注意@用于表示%+s--date参数中获得的时间.