我在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