将日期时间字符串转换为datetime对象时如何保留时区

时间:2017-04-13 19:30:44

标签: python

我有这种格式的日期="星期二,2017年2月28日18:30:32 GMT"

我可以使用time.strptime("Tue, 28 Feb 2017 18:30:32 GMT", "%a, %d %b %Y %H:%M:%S %Z")将其转换为日期时间对象,但日期时间对象不会跟踪时区。

我希望能够知道时区。我怎样才能做到这一点?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

from dateutil import parser
parser.parse("Tue, 28 Feb 2017 18:30:32 GMT")
  

datetime.datetime(2017,2,28,18,30,32,tzinfo = tzutc())

答案 1 :(得分:0)

这个问题实际上比最初出现的问题更为复杂。我知道时区名称并不是唯一的,并且有很多东西。但是,如果您需要使用它们的数量是可管理的,并且您的输入仅限于该格式,那么这种方法可能对您有好处。

>>> from dateutil.parser import *
>>> tzinfos = {'GMT': 0, 'PST': -50, 'DST': 22 }
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 GMT", tzinfos=tzinfos)
>>> aDate.tzinfo.tzname(0)
'GMT'
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 PST", tzinfos=tzinfos)
>>> aDate.tzinfo.tzname(0)
'PST'
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 DST", tzinfos=tzinfos)
>>> aDate.tzinfo.tzname(0)
'DST'

将替代时区缩写加载到字典中,在此代码中称为tzinfos然后解析。从日期表达式解析的时区在显示的构造中可用。

正如您所料,其他日期项目可用。

>>> aDate.day
28
>>> aDate.month
2
>>> aDate.year
2017