Python将字符串转换为本地日期时间到UTC日期时间

Python将字符串转换为本地日期时间到UTC日期时间,python,datetime,python-2.7,pytz,python-dateutil,Python,Datetime,Python 2.7,Pytz,Python Dateutil,真的困在这里了。我已经看过了各种答案,但其中的一部分似乎是有效的(Python2.7) 我有一个字符串fileGenTime,表示时间/日期。我需要将其解析为日期/时间,然后将其转换为UTC。我尝试过使用“pytz”和“dateutil”,但我不确定为什么它不起作用。。。。这是我的尝试 from datetime import datetime from dateutil import tz fileGenTime = 'Thu Jan 2 19:23:34 EST 2014' fileGe

真的困在这里了。我已经看过了各种答案,但其中的一部分似乎是有效的(Python2.7)

我有一个字符串
fileGenTime
,表示时间/日期。我需要将其解析为日期/时间,然后将其转换为UTC。我尝试过使用“pytz”和“dateutil”,但我不确定为什么它不起作用。。。。这是我的尝试

from datetime import datetime
from dateutil import tz

fileGenTime = 'Thu Jan  2 19:23:34 EST 2014'
fileGenTime = fileGenTime.replace('  ',' ') #double spaces...
wday, month, day, time, zone, year = fileGenTime.split(' ')
hour, minute, second = time.split(':')

localGenTime = datetime.strptime(day +' '+ month +' '+ year
 +' '+ hour +' '+ minute +' '+ second, '%d %b %Y %H %M %S')
我最初尝试在最后一行中包含
区域
,并在arg格式中使用
%Z
。。。现在,我尝试将本地时间转换为一个带时区的时间,然后使用
astimezone
将其转换为UTC

localZone = tz.gettz(zone)
localGenTime = localGenTime.replace(tzinfo = localZone)

normalisedTimezone = tz.gettz('UTC')
normalisedGenTime = localGenTime.astimezone(normalisedTimezone)
我收到的错误消息是。。。。 “ValueError:月份必须在1..12”…嗯

我在拔头发!任何帮助都将不胜感激

这里有完整的追踪

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\site-packages\python_dateutil-1.5-py2.7.egg\dateutil\tzwin.py", line 32, in utcoffset
    if self._isdst(dt):
  File "C:\Python27\lib\site-packages\python_dateutil-1.5-py2.7.egg\dateutil\tzwin.py", line 67, in _isdst
    self._dstweeknumber)
  File "C:\Python27\lib\site-packages\python_dateutil-1.5-py2.7.egg\dateutil\tzwin.py", line 166, in picknthweekday
    first = datetime.datetime(year, month, 1, hour, minute)
ValueError: month must be in 1..12
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\site packages\python\u dateutil-1.5-py2.7.egg\dateutil\tzwin.py”,第32行,在utcoffset中
如果是自整定isdst(dt):
文件“C:\Python27\lib\site packages\python\u dateutil-1.5-py2.7.egg\dateutil\tzwin.py”,第67行,在isdst中
self.dstu周数)
文件“C:\Python27\lib\site packages\python\u dateutil-1.5-py2.7.egg\dateutil\tzwin.py”,第166行,在PickthWeekday中
first=datetime.datetime(年、月、1、小时、分钟)
ValueError:月份必须在1..12之内

看起来您正在将Windows与旧版本的
dateutil
一起使用,并且您点击了

解决方案(我两个都试过了,都有效):

  • 将dateutile从1.5版升级到2.2版
  • 如果由于某种原因无法升级,则可以删除文件
    Lib/site-packages/dateutil/tzwin.py
    Lib/site-packages/dateutil/tzwin.pyc
    。但那纯粹是邪恶。我会选择1

  • 你能添加完整的回溯吗?编辑后包括回溯奈杰尔,谢谢我的机器运行正常。您的dateutil版本非常旧。你能用新版本试试吗?注意: