0

本当にここで立ち往生。さまざまな回答を見てきましたが、それらのゾーンは機能しているようです(Python2.7)

fileGenTime時刻/日付を表すstring があります。それを日付/時刻に解析してから、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、この最後の行に を含め%Z、形式 arg で使用しようとしました...今、ローカル時間をタイムゾーンのある時間に変換し、それを使用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
4

1 に答える 1

2

古いバージョンの Windows を使用していて、このdateutildateutil bugに遭遇したようです。

解決策(両方を試しましたが、両方とも機能しました):

  1. dateutile をバージョン 1.5 からバージョン 2.2 にアップグレードします。
  2. 何らかの理由でアップグレードできない場合は、ファイルLib/site-packages/dateutil/tzwin.pyLib/site-packages/dateutil/tzwin.pyc. しかし、それは純粋な悪です。オプション#1を使用します。
于 2014-01-30T11:51:46.860 に答える