簡體   English   中英

不理解 Python 中的日期時間增量

[英]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.datetimedt.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM