0

次の形式を使用して、文字列を日時オブジェクトに変換しています。

datetime.datetime.strptime(systemTime, '%a %b %d %H:%M:%S %Z %Y')

私はそれをテストしましたがsystemTime="Wed Jan 05 06:10:01 GMT 2005"、うまくいきました。しかし、私が試したときsystemTime="Wed Oct 02 18:01:56 EDT 2013"、それは失敗しましたValueError:

Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 504, in run
    self.__target(*self.__args, **self.__kwargs)
  File "SimpleWebServer.py", line 146, in startUDPServer
    ESTTime = datetime.datetime.strptime(systemTime, '%a %b %d %H:%M:%S %Z %Y')
  File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'Wed Oct 02 18:01:56 EDT 2013' does not match format '%a %b %d %H:%M:%S %Z %Y'

マシンのロケールは「en US」です。私のフォーマットに何か問題がありますか?

4

2 に答える 2

0

dateutilパッケージには、タイムゾーン処理を拡張するためのフックがありますが、EDT を解析しません。日付の残りを解析し、タイムゾーンを空のままにします。それを使用して、アプリケーションのタイムゾーンを追加できます。

于 2013-10-02T23:40:04.643 に答える
0

Python は EDT を解析しません。ただし、UTCは機能します。

from datetime import datetime
fmt = '%a %b %d %H:%M:%S %Z %Y'
t = "Wed Oct 02 18:01:56 UTC 2013"
print datetime.strptime(t, fmt)

結果は有効な日時オブジェクトになります

datetime.datetime(2013, 10, 2, 18, 1, 56)

于 2013-10-02T22:40:33.813 に答える