Python的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)
Run Code Online (Sandbox Code Playgroud)
但是,"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'
Run Code Online (Sandbox Code Playgroud)
它对%Z的期望是什么?或者,我如何表示UTC以外的时区?
我知道他们是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)
Run Code Online (Sandbox Code Playgroud)
当然,这些设置是特定于机器的,并且您的设置可能会有所不同.
这是来自time模块,但我几乎可以肯定它适用于datetime:
对 %Z 指令的支持基于 tzname 中包含的值以及 daylight 是否为 true。因此,除了识别始终已知的 UTC 和 GMT(并且被认为是非夏令时时区)之外,它是特定于平台的。
https://docs.python.org/library/time.html
在我的系统上:
>>> import time
>>> time.tzname
('PST', 'PDT')
Run Code Online (Sandbox Code Playgroud)
在 datetime.strptime 中使用除这些之外的任何内容都会导致异常。所以,看看你的机器上有什么可用的。
| 归档时间: |
|
| 查看次数: |
15803 次 |
| 最近记录: |