Python 3.5.2 strptime在使用相同的格式化字符串时无法读取strftime的输出?

时间:2017-02-01 19:31:00

标签: python python-3.x strftime strptime

我在Python 3.5.2中遇到了与time.strptime有关的奇怪问题。出于测试目的,我使用time.strftime生成时间字符串,然后尝试使用time.strptime解析该字符串,在两种情况下都使用相同的格式字符串。

示例代码说明了这一点:

#!/usr/bin/env python

import time

if __name__ == '__main__':
    time_test=time.strftime('%Y-%m-%dT%H:%M:%S%z', time.localtime())
    print (time_test)
    test=time.strptime('%Y-%m-%dT%H:%M:%S%z', time_test)
    print (time.strftime('%Y-%m-%d %H:%M:%S', test))

我看到的结果:

2017-02-01T11:23:53-0800
Traceback (most recent call last):
  File "test_time.py", line 8, in <module>
    test=time.strptime('%Y-%m-%dT%H:%M:%S%z', time_test)
  File "/usr/local/Python-3.5.2/lib/python3.5/_strptime.py", line 504, in _strptime_time
    tt = _strptime(data_string, format)[0]
  File "/usr/local/Python-3.5.2/lib/python3.5/_strptime.py", line 343, in _strptime
    (data_string, format))
ValueError: time data '%Y-%m-%dT%H:%M:%S%z' does not match format '2017-02-01T11:23:53-0800'

1 个答案:

答案 0 :(得分:0)

哦:我得到了time.strptime逆转的论据。

正确的代码如下:

#!/usr/bin/env python

import time

if __name__ == '__main__':
    time_test=time.strftime('%Y-%m-%dT%H:%M:%S%z', time.localtime())
    print (time_test)
    test=time.strptime(time_test, '%Y-%m-%dT%H:%M:%S%z')
    print (time.strftime('%Y-%m-%d %H:%M:%S', test))