dateutil.parser 处理以 Z 结尾的日期字符串
dateutil.parser handling of datestring ending in Z
我有这样的日期字符串:'2015-03-02T10:00:00Z'。在我的本地机器上,dateutil.parser.parse()
生成带有时区 UTC 的日期时间对象,正如我所期望的那样。但是在不同的环境中(当我部署到 iron.io 时),它会解析相同的字符串并将生成的日期时间 tzlocal()
作为它们的 tzinfo
.
是否有已知的原因应该发生?为什么环境会影响 Z
的解析方式?
(两种环境都应该是Python 2.7)
我看到这个问题很老了,但我也遇到过类似的问题。在我的例子中,我发现,出于某种原因,如果当前时区是 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())
我有这样的日期字符串:'2015-03-02T10:00:00Z'。在我的本地机器上,dateutil.parser.parse()
生成带有时区 UTC 的日期时间对象,正如我所期望的那样。但是在不同的环境中(当我部署到 iron.io 时),它会解析相同的字符串并将生成的日期时间 tzlocal()
作为它们的 tzinfo
.
是否有已知的原因应该发生?为什么环境会影响 Z
的解析方式?
(两种环境都应该是Python 2.7)
我看到这个问题很老了,但我也遇到过类似的问题。在我的例子中,我发现,出于某种原因,如果当前时区是 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())