我在mac os上得到解決,而且我的一些腳本在linux之後無法運行。特別是一個腳本非常有趣。OSX無法將ISO8601轉換爲紀元
所以我試圖將ISO8601日期轉換爲unix時代。 做OSX原生的方式似乎是
$ date -j -f "%FT%TZ" "2015-09-09T13:19:09Z"
Wed 9 Sep 2015 13:19:09 NZST
$ date -j -f "%FT%TZ" "2015-09-09T13:19:09Z" +%s
1441761549
看起來不錯,除了它是錯誤的答案。它比真正的答案和我的時區+12小12個小時,所以雲時區如何影響unix時代?
而只是驗證自己
$ docker run -it --rm trusty date -d"2015-09-09T13:19:09Z" +%s
1441804749
相同的工具,在Linux上給予正確的答案...
我只是想了解什麼是錯在這裏 - 我缺少的東西或者是它只是一個破事兒?
OSX約塞米蒂10.10.4
UPD: 只是一些額外的細節 - 我建議它date
UTIL之間的差異,但它不僅date
。
Stass-MacBook:~ void$ python -c 'import dateutil.parser; print dateutil.parser.parse("2015-09-09T13:19:09Z").strftime("%s")'
1441761549
Stass-MacBook:~ void$ docker run trusty python -c 'import dateutil.parser; print dateutil.parser.parse("2015-09-09T13:19:09Z").strftime("%s")'
1441804749
更新了帖子。這是我的第一個猜測,就是'date' util是不同的,但是當它發生時,我嘗試了不同的utils,並且它們都在OSX上給出了相同的結果。它在某個圖書館深處還是什麼? – flashvoid
關於python,請參閱http://stackoverflow.com/questions/24732872/dateutil-parser-parse-and-lost-timezone-information和http://stackoverflow.com/questions/2335405/parse-timezone-abbreviation-to -utc關於底層庫,請參閱'man strptime'。您可以嘗試使用'strptime(3)'編寫自己的簡單C應用程序,並查看在OS X上與Linux系統上是否有不同的行爲。 – sideshowbarker