2014-01-30 127 views
0

真的停留在這裏。我看了各種答案,但他們的區似乎工作(Python2.7)Python將字符串轉換爲本地日期時間爲UTC DateTime

我有一個字符串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') 

我最初嘗試,包括在zone這最後一行,並使用格式爲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 
+0

你可以添加完整的追溯? –

+0

編輯包含追溯奈傑爾,謝謝 – AlanF

+1

在我的機器上它運行正常。你的dateutil版本很舊。你可以用更新的版本試用嗎? – Bach

回答

2

它看起來像你使用的是Windows與舊版本的dateutil,你已經打了this dateutil bug

解決方案(我都試過,都工作):

  1. 升級dateutile從1.5版本到2.2版本
  2. 如果由於某種原因,你不能再升級,你可以刪除文件Lib/site-packages/dateutil/tzwin.pyLib/site-packages/dateutil/tzwin.pyc 。但這是純粹的邪惡。我會選擇#1。
+0

+1爲錯誤的鏈接。 – Bach

+0

選項1是答案,感謝mil。 – AlanF

相關問題