2009-08-19 3 views
10

Pythonのdatetime.strptime()は、%Zフィールドにタイムゾーンをサポートするものとして文書化されています。したがって、たとえば:datetime.strptime()は%Zに対してどのような値を受け入れますか?

In [1]: datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z") 
Out[1]: datetime.datetime(2009, 8, 19, 14, 20, 36) 

しかし、「UTCは、」私はそれをサポートするために得ることができる唯一のタイムゾーンのようだ:

In [2]: datetime.strptime('2009-08-19 14:20:36 EDT', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z' 

In [3]: datetime.strptime('2009-08-19 14:20:36 America/Phoenix', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 America/Phoenix' does not match format '%Y-%m-%d %H:%M:%S %Z' 

In [4]: datetime.strptime('2009-08-19 14:20:36 -0700', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 -0700' does not match format '%Y-%m-%d %H:%M:%S %Z' 

それは、%Zのために期待している何形式?または、UTC以外のタイムゾーンをどのように表しますか?

答えて

9

GMT、UTC、およびtime.tznameにリストされているものがすべて集まります。

>>> for t in time.tzname: 
...  print t 
... 
Eastern Standard Time 
Eastern Daylight Time 
>>> datetime.strptime('2009-08-19 14:20:36 Eastern Standard Time', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 
>>> datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 
>>> datetime.strptime('2009-08-19 14:20:36 GMT', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 

これらの設定はもちろんマシン固有のものであり、お使いのコンピュータによって異なる場合があります。

4

これはtimeモジュールからですが、私はそれがdatetimeに適用され、ほぼ確信します。%Zディレクティブの

サポートは、日光が真であるかどうかをTZNAMEに含まれる値の と をベースにしています。 のため、これはプラットフォーム固有であり、 (UTCとGMTの認識には )が常に知られています(そして、 非夏時間タイムゾーンとみなされます)。私のシステムで

https://docs.python.org/library/time.html

>>> import time 
>>> time.tzname 
('PST', 'PDT') 

例外でdatetime.strptime結果におけるこれら以外のものを使用します。それで、あなたがあなたのマシンで利用できるものを見てください。

関連する問題