我正在编写一个以开始日期和结束日期作为参数的脚本。我需要按小时增加开始日期,直到到达午夜并且日期增加一。开始日期和结束日期可能跨越多个月。所以,我的想法是利用日期函数,我发现很多帖子都涉及到这一点。但是,我没有得到正确的结果。例如 :
$ date -d "1999-05-20 23:00:00 +10 min"
Thu, May 20, 1999 9:01:00 AM
$ date -d "1999-05-20 00:00:00 +1 hour"
Wed, May 19, 1999 8:00:00 PM
可以看到,返回值全部为off。我不确定我哪里做错了。我还想按如下方式格式化返回的日期时间,但没有成功:
$ date -d "1998-12-31 23:00:00 +0.5 hour" +"%Y/%m/%d-%T"
date: invalid date ‘1998-12-31 23:00:00 +0.5 hour’
如果有人对我的脚本伪代码感兴趣:
While Start_date != End_Date :
Do some stuff here
Start_date = Start_date + 1 hour
答案1
正如 Stéphane Chazelas 所指出的,问题是由小时前的 + 号引起的,因为它表示时区而不是小时。
所以而不是:
$ date -d "1999-05-20 00:00:00 +1 hour"
用这个 :
$ date -d "1999-05-20 00:00:00 1 hour"
答案2
在添加 delta 之前似乎可以在我的 Ubuntu 18.04 上运行:
date -d "-10min 1999-05-20 23:00:00"
Do 20. Mai 22:50:00 CEST 1999