2017-02-01 19 views
1

我在Python 3.5.2中遇到了time.strptime的奇怪問題。出於測試目的,我使用time.strftime生成時間字符串,然後嘗試使用time.strptime解析該字符串,在這兩種情況下使用相同的格式化字符串。Python 3.5.2使用相同的格式化字符串時,strptime無法讀取strftime的輸出?

說明這個

示例代碼:

#!/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

哦:我得到的參數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))