我想用这个命令获取日期信息:
date --date=2019-03-22
或者
date --date=2019/03/22
但它显示了这个错误:
date: invalid date ‘2019-03-22’
或者
date: invalid date ‘2019/03/22’
如您所见,它与破折号无关。斜线也会发生同样的事情。
当我使用另一个日期时
date --date=2019-03-21
它正确显示了信息。
它不应该与坏的破折号字符有关。因为我刚刚删除了最后一个2
并将其替换1
为输出正常。
出了什么问题?
一些命令的结果以获取更多信息:
$ date --version
date (GNU coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie.
$ type -a date
date is /bin/date
$ uname -m
x86_64
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
$ which date
/bin/date
$ apt-cache policy coreutils
coreutils:
Installed: 8.28-1ubuntu1
Candidate: 8.28-1ubuntu1
Version table:
*** 8.28-1ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
$ date
Fri Mar 22 06:54:59 PDT 2019
date --date=2019-03-22 2>&1 | od -c
0000000 d a t e : i n v a l i d d a
0000020 t e 342 200 230 2 0 1 9 - 0 3 - 2 2
0000040 342 200 231 \n
0000044
在这个日期不同时区发生了一些奇怪的事情:2019-03-22
. 我随机将时区更改为不同的区域。有些有错误,有些没有!当我选择这些时,我对该特定日期有疑问:
- 洛杉矶(美国)
- 上海,中国)
- 西班牙马德里)
我几乎可以肯定这是由于在给定时区转换为夏令时:实际上这意味着一个小时“消失”(因此变成“
invalid
”)。在我自己的时区,DST 于 3 月 10 日星期日凌晨 2 点开始,因此该小时无效:
而之前和之后的时间是有效的:
在更改发生在午夜的时区中,裸日期似乎无效,因为 GNU
date
假定时间为午夜:但一小时后有效:
另请参见无效日期 Linux
和