2017-04-13 119 views
1

我这种格式有一个日期=时保留时区“星期二,2017年2月28日18:30:32 GMT”如何日期时间字符串转换为DateTime对象

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

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

回答

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())

+0

谢谢,我知道我可以在一行中使用dateutil.parser来实现这一点。我试图用标准库实现这一点,并使用外部库作为最后的手段。 – user6037143

+0

在你的问题中,你表明你愿意使用time.strptime,它必须被导入,除非它没有工作。 dateutil也是一个非常常见的库,除了这个工作外,根本不是一个沉重的依赖。如果您不接受任何使用图书馆的答案,或者特别不接受任何使用任何图书馆的答案(除了时间以外),请在下次问题中详细说明。 –

+0

哎呀!我的意思是标准库(即时间),而不必安装外部库(即dateutil.parser)。 – user6037143

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 
相关问题