解析日期-d的不一致性

时间:2018-01-12 23:07:44

标签: linux date

date解析器如何工作?

date -d "2010-08-12 05:30:30.102 AM + 0 months"
Thu Aug 12 05:30:30 EDT 2010

但是

date -d "2010-08-12 05:30:30.102 + 0 months"
Thu Aug 12 01:30:30 EDT 2010

1 个答案:

答案 0 :(得分:3)

似乎是+ 0在未包含AM时被解释为UTC偏移的情况。但是,当包含AM时,+ 0是否适用于偏移或者是否属于months不再含糊不清,因为UTC偏移仅在24小时时间有效时才有效用过的。

在前一种情况下,months单独被解释为+ 1 months(至少在date的某些版本中),如评论中提到的ghoti。

还要考虑date -d "2010-08-12 05:30:30 +0"是可接受的格式。但是date -d "2010-08-12 05:30:30 AM +0"无效,因为AM存在时无法使用UTC偏移量。