Bash脚本中实现昨日日期按1小时增量输出时间区间求助
解决Bash脚本生成昨日逐小时时间区间的问题
我来帮你搞定这个需求!其实不需要用时间戳计算分钟,直接固定每小时的起始和结束分钟秒就好,这样更简单直观。下面是完整的脚本,完全符合你要的输出格式:
#!/bin/bash # 先获取昨日的日期(格式如2018-04-23) yesterday=$(date -d "1 day ago" +%Y-%m-%d) # 遍历一天的24个小时 for hour in {0..23}; do # 把小时格式化为两位数字(比如把5变成05,保证格式统一) formatted_hour=$(printf "%02d" "$hour") # 拼接起始时间:昨日日期 + 格式化小时 + 00分00秒 + Z FROM_DATE="${yesterday}T${formatted_hour}0000Z" # 拼接结束时间:昨日日期 + 格式化小时 + 59分59秒 + Z TO_DATE="${yesterday}T${formatted_hour}5959Z" # 输出结果 echo "FROM_DATE : $FROM_DATE" echo "TO_DATE : $TO_DATE" done
脚本说明:
- 获取昨日日期:用
date -d "1 day ago" +%Y-%m-%d一次性拿到昨日的日期字符串,避免多次调用date命令,效率更高。 - 格式化小时:用
printf "%02d"把0-9的小时转换成两位数字(比如0变成00,9变成09),确保时间格式完全符合要求。 - 拼接时间字符串:因为每小时的起始都是
00分00秒,结束都是59分59秒,直接固定这部分字符串即可,不需要复杂的时间计算,既简单又不容易出错。
运行这个脚本后,就能输出你想要的逐小时时间区间啦!
内容的提问来源于stack exchange,提问作者karthick murugamurthy
相关产品推荐
相关产品推荐

