我在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'
答案 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))