[英]Not understanding datetime delta in Python
from datetime import datetime as dt
我有 2 個日期時間字段
dt.now()
返回2019-01-08 11:46:26.035303這是 PST
x 是我的數據集
x['CreatedDate']
返回2019-01-08T20:35:47.000+0000
dt.strptime(x['CreatedDate'.split('.')[0],'%Y-%m-%dT%H:%M:%S)) - datetime.timedelta(hours=8)
返回2019 -01-08 08:43:33
我減去兩個, tdelta = dt.now() - (dt.strptime(x['CreatedDate'.split('.')[0],'%Y-%m-%dT%H:%M:%S)) - datetime.timedelta(hours=8))
即2019-01-08 11:46:26.035303 - 2019-01-08 08:43:33
差異應該是 ~3 小時,但我得到的結果是-1 day, 11:02:53.039790
-13H 12M 53S
我對返回的內容感到困惑。
免責聲明
我在制作您制作的datetime
時間對象時遇到了困難。 因此,我的回答不會直接解決您的確切問題。
我的代碼中沒有定義x
。 如果你提供它,我可以調整我的答案更具體。
回答
但是如果你使用這個代碼:
import datetime as dt
first_time = dt.datetime(2019, 1, 8, 8, 43, 33) #This is a good way to make a datetime object
為了制作您的日期時間對象,下面的代碼將進行正確的計算並為您有效地打印出來:
second_time = dt.datetime.now()
my_delta = first_time - second_time
print("Minutes: " + str(my_delta.total_seconds()/60))
print("Hours: " + str(my_delta.total_seconds()/3600))
print("Days: " + str(my_delta.total_seconds()/3600/24))
筆記
dt.datetime
在dt.datetime
需要(年、月、日、小時、分鍾、秒),但dt.datetime.now()
用微秒(年、月、日、小時、分鍾、秒、微秒)制作一個。 該函數可以處理被賦予不同的時間特性而不會出錯。
筆記2
如果您執行print(my_delta)
並得到類似: -1 day, 16:56:54.481901
這將等於您的差異,如果您的差異是Hours: -7.051532805277778
這是因為24-16.95 = -7.05
問題在於減去 datetime.timedelta(hours=8) 我刪除了它,將 dt.now 更改為 dt.utcnow() 並且它工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.