Shell
為什麼我的“日期”不能處理時區?
我在使用 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 中實現的(參見變更日誌)。