我在 GNU coreutils date v8.4 (CentOS) 中遇到了一些奇怪的问题,但在 v8.21 (Ubuntu/Mint) 中没有出现这些问题。
在 v8.4 上,我得到以下输出(我处于 PST 状态):
$ date --version | head -n 1
date (GNU coreutils) 8.4
$ date -d '2014-11-08'
Sat Nov 8 00:00:00 PST 2014
$ date -d '2014-11-08T00:00:00'
Fri Nov 7 09:00:00 PST 2014
我假设它正在尝试对 UTC 进行时区校正,即使我没有请求它,并且这种行为不会发生在我的本地 Linux Mint 计算机上。
好的,所以我将添加一个时区说明符,如指定的W3。在我的机器上:
$ date --version | head -n 1
date (GNU coreutils) 8.21
$ date -d '2014-11-08T00:00:00-0800'
Sat Nov 8 00:00:00 PST 2014
$ date -d '2014-11-08T00:00:00-08:00'
Sat Nov 8 00:00:00 PST 2014
伟大的。但在 CentOS 上:
$ date --version | head -n 1
date (GNU coreutils) 8.4
$ date -d '2014-11-08T00:00:00-0800'
date: invalid date `2014-11-08T00:00:00-0800'
$ date -d '2014-11-08T00:00:00-08:00'
date: invalid date `2014-11-08T00:00:00-08:00'
编辑:另一个不起作用,使用date
自己的输出:
$ date -d "$(date -Ihours)"
date: invalid date `2014-11-08T13-0800'
下列做工作:
$ date -d '2014-11-08 00:00:00 -08:00'
Sat Nov 8 00:00:00 PST 2014
但是,由于完全不相关的要求,我的日期字符串中不能有任何空格。
我很困惑。我寻找最近的更改date
但没有看到任何看起来有希望的东西。
我的问题:我怎样才能date
完全不改变我的时区(最好),或者接受来自人类可读字符串的时区输入而不带空格?