我需要將一組格式為“2017-12-02 23:55:66.333 01:00”的字串轉換為日期時間。
我嘗試使用這個:
from datetime import datetime
date_time_str = '2017-12-02 23:55:66.333 01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S%z')
print ("The date is", date_time_obj)
但我有這個輸出:
>> ValueError: raise ValueError("time data %r does not match format %r" %
ValueError: time data '2017-12-02 23:55:66.333 01:00' does not match format '%Y-%m-%d %H:%M:%S%z'
如何轉換此日期或此 date_time_str 無效?
uj5u.com熱心網友回復:
有兩個問題:
- 你的秒數大于 60
- 你需要包括微秒格式化程式
因此要修復它,
from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333 01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print("The date is", date_time_obj)
產量
The date is 2017-12-02 23:55:06.333000 01:00
您可以捕獲由秒數過大引起的錯誤,并通過以下方式提出有用的錯誤訊息
from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333 01:00'
try:
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
except ValueError as ve:
if "unconverted data remains" in ve.args[0]:
raise ValueError("One of the values in the time string isn't meaninful")
else:
raise ve
print("The date is", date_time_obj)
uj5u.com熱心網友回復:
這是您想要做的,缺少剝離微秒和時區部分:
date_time_str = '2017-12-02 23:55:59.333 01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print ("The date is", date_time_obj)
輸出 :
The date is 2017-12-02 23:55:59.333000 01:00
或者只是在 python 3.7 中使用它:
datetime.fromisoformat(date_time_str)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409556.html
標籤:
下一篇:將某些列型別從日期時間更改為日期
