为什么我的“日期”不能处理时区?

为什么我的“日期”不能处理时区?

我在 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完全不改变我的时区(最好),或者接受来自人类可读字符串的时区输入而不带空格?

答案1

再次检查您的链接发布,有一条提交消息:

date: support parsing of ISO-8601-with-"T" dates

它在 coreutils 8.13 中实现(参见变更日志)。

相关内容