dateutil.parser处理以Z结尾的日期字符串

时间:2015-10-13 17:44:05

标签: python parsing datetime timezone iron.io

我的日期字符串如下所示:' 2015-03-02T10:00:00Z'在我的本地计算机上,dateutil.parser.parse()产生带有时区UTC的日期时间对象,正如我所料。但是在不同的环境中(当我部署到iron.io时),它会解析相同的字符串,并将生成的日期时间tzlocal()作为tzinfo

是否有一个已知的原因应该发生?为什么环境会影响Z的解析方式?

(两个环境都应该是Python 2.7)

1 个答案:

答案 0 :(得分:2)

我看到这个问题已经过时了,但我遇到了类似的问题。在我的情况下,我发现,由于某种原因,如果当前时区是UTC,当我解析像“2017-02-23T06:54:00Z”这样的字符串时,生成的日期时间为tzinfo=tzlocal();而对于其他时区,结果日期时间按预期为tzinfo=tzutc()

In [1]: import time, os

In [2]: from dateutil import parser

In [3]: time.tzname, time.timezone
Out[3]: (('EST', 'EDT'), 18000)

In [4]: parser.parse("2017-02-23T06:54:00Z")
Out[4]: datetime.datetime(2017, 2, 23, 6, 54, tzinfo=tzutc())

In [5]: os.environ['TZ'] = 'UTC'

In [6]: time.tzset()

In [7]: time.tzname, time.timezone
Out[7]: (('UTC', 'UTC'), 0)

In [8]: parser.parse("2017-02-23T06:54:00Z")
Out[8]: datetime.datetime(2017, 2, 23, 6, 54, tzinfo=tzlocal())