2009-08-19 35 views
10

datetime.strptime() của Python được ghi nhận là hỗ trợ múi giờ trong trường% Z. Vì vậy, ví dụ:datetime.strptime() chấp nhận giá trị nào cho% 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) 

Tuy nhiên, "UTC" dường như là múi giờ duy nhất tôi có thể lấy nó để hỗ trợ:

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' 

định dạng gì là nó chờ đợi cho% Z? Hoặc, làm thế nào để tôi đại diện cho một múi giờ khác với UTC?

Trả lời

9

Tôi thu thập chúng là GMT, UTC và mọi thứ được liệt kê trong 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) 

Các cài đặt này là máy cụ thể, tất nhiên và bạn sẽ khác nhau trong mọi khả năng.

4

Đây là từ các module time, nhưng tôi gần như chắc chắn nó áp dụng cho datetime:

Hỗ trợ cho các chỉ thị% Z dựa trên các giá trị chứa trong tzname và dù ánh sáng ban ngày là đúng. Bởi vì điều này, nó cụ thể theo nền tảng trừ để nhận dạng UTC và GMT là luôn được biết (và được coi là múi giờ tiết kiệm không phải ban ngày).

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

Trên hệ thống của tôi:

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

Sử dụng bất cứ điều gì nhưng những trong datetime.strptime kết quả trong một ngoại lệ. Vì vậy, hãy xem những gì bạn có trên máy của bạn.

Các vấn đề liên quan