ValueError運行以下代碼時會引發以下問題。日期作為來自另一個組件的字串傳遞,我需要去掉時間。
ValueError: time data '2022-03-24T14:02:24.6413975' does not match format '%Y-%m-%d %H:%M:%S,%f'
代碼:
from datetime import datetime
date='2022-03-24T14:02:24.6413975'
time = datetime.strptime(date, "%Y-%m-%d %H:%M:%S,%f")
if time > '09:30' :
print("do some thing")
uj5u.com熱心網友回復:
如錯誤訊息所述,您面臨的主要問題是日期時間格式。
.%f格式化程式只能接受六位小數。- 格式字串中
T缺少 。 - 格式化程式之前有一個逗號
%f,這里應該有一個句號。
因此,這是您需要的格式化字串:
'%Y-%m-%dT%H:%M:%S.%f'
此外,time可以簡單地通過如下 datetime呼叫函式從物件中決議。如果可能的話,不應使用字串決議。.time()
time = dt.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f").time()
接下來,該if陳述句應將datetime物件與datetime物件進行比較,如下所示:
if time > dt.time(9,30):
...
因此,完整的解決方案如下:
import datetime as dt
# Fractional seconds reduced to 6 decimal places.
date = '2022-03-24T14:02:24.641397'
# Use the .time() function to extract the time.
time = dt.datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%f').time()
# Compare datetime object to datetime object.
if time > dt.time(9,30):
print('Do some stuff ...')
uj5u.com熱心網友回復:
希望這可能會有所幫助:
def stripTime():
date='2022-03-24T14:02:24.6413975'
date=date.split('T')
print(date[1])
stripTime()
輸出:
14:02:24.6413975
uj5u.com熱心網友回復:
這應該有效:
import datetime
date='2022-03-24T14:02:24.6413975'
time = date.split('T')[1].split(':')
time = datetime.time(int(time[0]), int(time[1]), int(time[2].split('.')[0]), int(time[2].split('.')[1][:6]))
if time > datetime.time(9, 30) :
print("do some thing")
輸出:
do some thing
這只是需要date,拆分它T,在 every 拆分結果字串的第二部分:,然后將它們全部傳遞給datetime.time. 最后兩個引數datetime.time必須拆分為小數以獲得微秒,最后一個必須縮短,因為datetime允許微秒的時間長度受到限制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/449003.html
標籤:Python python-3.x
