我想写一个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)
显然,这里的两个硬位是指定日期并按小时递增.
是否可以使用日期或其他方法轻松完成此操作?
首先,您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参数中获得的时间.
| 归档时间: |
|
| 查看次数: |
3468 次 |
| 最近记录: |