给定格式的日期20130522
,我需要生成一个日期+小时的序列,如下所示:
2013052112,2013052113,2013052114,...,2013052122,2013052123,
2013052200,2013052201,2013052202,...,2013052222,2013052223,
2013052300
其中第一个日期+小时是给定日期前 12 小时,最后一个日期+小时是给定日期第二天的午夜。
我尝试了几种方法,但没有一个是理想的。如何使用 shell 脚本以干净的方式生成这样的序列?谢谢!
- 编辑 -
根据您的要求,这是我目前所拥有的:
day=20130522
begin=`date --date "$day -12 hours"`
begin=`date -d "${begin:0:8} ${begin:8:2}" +%s`
end=`date --date "$day +1 day"`
end=`date -d "${end:0:8} ${end:8:2}" +%s`
datestr=`date -d @${begin} +%Y%m%d%H`
let begin=$begin+3600
while [ $begin -le $end ]
do
hr=`date -d @${begin} +%Y%m%d%H`
datestr="$datestr,$hr"
let begin=$begin+3600
done
这就是我从上面得到的:
2013052100,2013052101,2013052102,...,2013052123,
2013052200,2013052201,2013052202,...,2013052223,
2013052300