按小时或分钟递增日期时间

按小时或分钟递增日期时间

我正在编写一个以开始日期和结束日期作为参数的脚本。我需要按小时增加开始日期,直到到达午夜并且日期增加一。开始日期和结束日期可能跨越多个月。所以,我的想法是利用日期函数,我发现很多帖子都涉及到这一点。但是,我没有得到正确的结果。例如 :

$ 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

相关内容