bash“date”返回特定日期字符串的“无效日期”错误

时间:2014-10-06 08:12:43

标签: string bash date

我想使用date命令在bash中添加一天的日期。日期的输入格式如下: 20130101 表示 2013年1月1日

我使用此命令来实现:

date -d "20130101 +1 day" +%Y%m%d

一切顺利,直至达到此日期: 20130322

然后它返回了这个错误:

date: invalid date ‘20130322 +1 day’

我尝试了其他类似日期的代码,其中一些很好,有些则没有!这是正常的吗?我的意思是,它可能与数字系统转换有某种关系,就像for循环到达第9个循环时发生的那样。我该如何正确解决问题?

1 个答案:

答案 0 :(得分:14)

好的,我找到了问题的原因。

问题与夏令时有关,每个时区的夏令时都不同。因此,预计错误将在不同时间针对不同时区重现。可以找到更多信息here.

我的时区是IRST(+3:30),例如,在2013年3月22日(20130322)调整为前进一小时,因此日期命令返回"无效日期"这个日期的错误。 为解决问题,如提供的链接中所述,您应该提供除日期之外的时间,这显然不应该在无效时间范围内。 3月22日00:00:00至00:59:59之间的任何时间对我的时区无效,应避免。因此,对于2013年3月22日,我可以通过这种方式更改命令以避免错误:

date -d "20130322 12:00 +1 day" +%Y%m%d