猛砸date命令无效日期

问题描述:

在linux下的bash当我输入date -d "1986-01-01"它显示错误猛砸date命令无效日期

 
date: invalid date "1986-01-01" 

date -d "1986-01-02"它的工作原理

date -d "1987-01-01"它也可以

为什么date -d "1986-01-01"显示了Linux的Bash shell中的错误。

我使用的Fedora 16

+0

类似'date -d“的东西1986-01-01”“+%Y”'? – fedorqui 2013-05-01 09:13:50

+0

它不起作用显示相同的错误 – 2013-05-01 09:15:36

+0

我有fedora 12,14和15,他们不显示这样的错误。所以我相信这是特定的f16 – 2013-05-01 09:17:59

尼泊尔在1986年开始改变了它的时区。下表是从的tzdata包复制:

# Zone NAME   GMTOFF RULES FORMAT [UNTIL] 
Zone Asia/Kathmandu 5:41:16 -  LMT  1920 
         5:30 -  IST  1986 
         5:45 -  NPT  # Nepal Time 

这意味着,在1986年1月1日从00:00:00至○点一十四分59秒的时候是无效的。下面的两个命令显示,这1986年的第一天开始00:15:00:

$ TZ=Asia/Kathmandu date -d '1985-12-31 23:59:59' '+%s' 
504901799 
$ TZ=Asia/Kathmandu date -d '1986-01-01 00:15:00' '+%s' 
504901800 

所以date错误消息是正确的。该时区的日期无效。我不确定你对这个命令的结果做了什么。但是,您可以尝试使用UTC,因为所有日期在UTC中都是有效且明确的:

$ TZ=UTC date -d '1986-01-01' 
Wed Jan 1 00:00:00 UTC 1986 
+0

谢谢我的详细回答 – 2013-05-01 09:59:21

+0

@nosid:非常好的解释 – 2013-05-02 09:20:42

我觉得你是在命令中使用字母“O”用大写字母代替数字“0” :)