3

在 linux bash 中,当我输入date -d "1986-01-01"时显示错误

日期:无效日期“1986-01-01”

date -d "1986-01-02"它工作时

date -d "1987-01-01"它也有效时

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

我正在使用 Fedora 16

4

2 回答 2

10

尼泊尔在 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 到 00:14: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
于 2013-05-01T09:55:09.143 回答
0

我认为您在命令中使用大写字母“O”而不是数字“0”:)

于 2013-05-01T09:23:17.477 回答