Python 使用pytz isn'的时间转换;不准确

Python 使用pytz isn'的时间转换;不准确,python,pytz,Python,Pytz,我使用的是'2014.2'版本的pytz。我正在使用以下过程将亚洲/科威特时区(即本地时间)转换为UTC时间: >>> from_date = "2014/05/06 17:07" >>> from_date = dateutil.parser.parse(from_date) >>> utc=timezone('UTC') >>> from_date = from_date.replace(tzinfo=timezone(

我使用的是
'2014.2'
版本的
pytz
。我正在使用以下过程将
亚洲/科威特
时区(即本地时间)转换为
UTC
时间:

>>> from_date = "2014/05/06 17:07"
>>> from_date = dateutil.parser.parse(from_date)
>>> utc=timezone('UTC')
>>> from_date = from_date.replace(tzinfo=timezone('Asia/Kuwait')).astimezone(utc)
>>> from_date
datetime.datetime(2014, 5, 6, 13, 55, tzinfo=<UTC>)
>>> from_date.strftime("%b %d %Y %H:%M:%S" )
'May 06 2014 13:55:00'
>>自_date=“2014/05/06 17:07”
>>>from_date=dateutil.parser.parse(from_date)
>>>utc=时区(“utc”)
>>>from_date=from_date.替换(tzinfo=时区(“亚洲/科威特”))。astimezone(utc)
>>>自年月日起
datetime.datetime(2014,5,6,13,55,tzinfo=)
>>>起始日期.标准时间(“%b%d%Y%H:%M:%S”)
“2014年5月6日13:55:00”

实际UTC时间是2014年5月6日14:06:00,我在:Why
pytz
中找到了该时间,但该时间并未准确转换为实际时间。正如您所看到的,
10-11分钟之间存在时差。

不要使用
datetime。将()
替换为
pytz
时区。从:

不幸的是,对于许多时区,使用标准datetime构造函数的tzinfo参数“不适用于”pytz

它不起作用的原因是
pytz
时区包含历史数据,而
datetime
不具备处理这些数据的能力

使用专用的
时区。本地化()
方法:

>>> import dateutil.parser
>>> from pytz import timezone
>>> from_date = "2014/05/06 17:07"
>>> from_date = dateutil.parser.parse(from_date)
>>> from_date = timezone('Asia/Kuwait').localize(from_date).astimezone(timezone('UTC'))
>>> from_date
datetime.datetime(2014, 5, 6, 14, 7, tzinfo=<UTC>)
>>> from_date.strftime("%b %d %Y %H:%M:%S" )
'May 06 2014 14:07:00'
导入dateutil.parser >>>从pytz导入时区 >>>from_date=“2014/05/06 17:07” >>>from_date=dateutil.parser.parse(from_date) >>>from_date=时区(“亚洲/科威特”)。本地化(from_date)。astimezone(时区(“UTC”)) >>>自年月日起 datetime.datetime(2014,5,6,14,7,tzinfo=) >>>起始日期.标准时间(“%b%d%Y%H:%M:%S”) “2014年5月6日14:07:00”
timezone.localize()
方法将时区正确应用于原始的
datetime
对象。

est=timezone('UTC')
?这是UTC,而不是美国东部时间。实际UTC时间更可能是2014年5月6日14:07:00。:-)科威特在1950年时的UTC偏移量为+3:12:00。时区对象默认为该值。正如Martijn的回答所指出的,您需要本地化it@MartijnPieters对不起,那是个打字错误。谢谢你<代码>本地化(),它是。