Shell

為什麼我的“日期”不能處理時區?

  • November 8, 2014

我在使用 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完全不更改我的時區(最好),或者接受來自人類可讀字元串的時區輸入而沒有空格?

再次檢查您發布的連結,有一條送出消息:

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

它是在 coreutils 8.13 中實現的(參見變更日誌)。

引用自:https://unix.stackexchange.com/questions/166856