我想使用date命令在bash中添加一天的日期.日期的输入格式如下:20130101,表示2013年1月1日
我使用此命令来实现:
date -d "20130101 +1 day" +%Y%m%d
一切顺利,直到达到这个日期:20130322
然后它返回了这个错误:
date: invalid date ‘20130322 +1 day’
我尝试了一些其他类似日期的代码,其中一些很好,一些不是!这是正常的吗?我的意思是,它可能与数字系统转换有某种关系,就像for循环到达第9个循环时发生的那样.我该如何正确解决问题?
好的,我找到了问题的原因.
问题与夏令时有关,每个时区的夏令时都不同.因此,预计错误将在不同时间针对不同时区重现.更多信息可以在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