2016-06-11 74 views
2

我的主机具有时区UTC和我试图PDT时间字符串转换为日期时间对象, 我已经使用了如下的代码片段,但它没有工作Python:将具有不同时区的时间字符串转换为主时区datetime对象?

datetime_obj = datetime.datetime.strptime('Thu Jun 09 08:28:12 PDT 2016', '%a %b %d %H:%M:%S %Z %Y') 

我得到这个错误 -

ValueError: time data 'Thu Jun 09 08:28:12 PDT 2016' does not match format '%a %b %d %H:%M:%S %Z %Y'

我明白这是因为我的主机的时区是UTC。但我无法找出解决这个问题的方法。我需要将PDT字符串转换为UTC意识到的时区。

我被封锁了。任何帮助赞赏。

+0

从哪里生成本地时间对象? 'pdt'部分就是为什么它不能正常工作。 –

+0

我的主机在UTC上,我正在运行上面的代码,并且我从另一个服务获取时间字符串 –

+0

您可能需要本地化PDT部分或在尝试使用datetime格式化之前将其转换。 –

回答

1

可以在TZINFOS有许多不同的值。如果遇到不同的时区,这将支持您的代码不会失败。

分析字符串然后转换PDT日期时间为UTC进行说明。

import pytz 
import dateutil.parser 
TZINFOS = { 'PDT': pytz.timezone('US/Pacific')} 
datetime_obj = dateutil.parser.parse('Thu Jun 09 08:28:12 PDT 2016', tzinfos= TZINFOS) 
print datetime_obj 
datetime_in_utc = datetime_obj.astimezone(pytz.utc) # convert to UTC 
print datetime_in_utc 

print pytz.all_timezones会给你所有可能的值。

+0

TZINFOS的这个特定结构“TZINFOS = {'PDT':pytz.timezone('US/Pacific')}”工作。你可以解释吗 ? –

+0

此参数将时区名称映射到时区,请参阅http://dateutil.readthedocs.io/en/stable/parser.html –

+0

感谢您的解决方案! –

相关问题