[英]How to get difference between 2 dates with different ISO format?
我需要計算 2 個不同格式的 ISO 日期之間的差異。 例如, 2019-06-28T05:28:14Z
和2019-06-28T05:28:14-04:00
。 這里的大多數答案只關注一種或另一種格式,即Z
格式。
這是我嘗試使用這個庫iso8601 的內容:
import iso8601
date1 = iso8601.parse_date("2019-06-28T05:28:14-04:00")
date2 = iso8601.parse_date("2019-06-28T05:28:14Z")
difference = date2 - date1
>>> datetime.timedelta(days=-1, seconds=75600)
我也嘗試用-00:00
替換Z
但區別是相同的:
date2 = iso8601.parse_date("2019-06-28T05:28:14Z".replace("Z", "-00:00")
如果我理解正確,它應該顯示 4 小時的差異。 如何計算 2 種不同日期格式之間的小時數/天數差異?
我正在使用 Python 3.8.1。
我使用過 Pandas 模塊,但我認為與 iso8601 相同。 為了有正確的差異,我必須在解析函數中指定相同的時區,如下所示:
import pandas as pd
date1 = pd.to_datetime("2019-06-28T05:28:14-04:00",utc=True)
date2 = pd.to_datetime("2019-06-28T05:28:14Z",utc=True)
然后我的差異以 Timedelta 格式表示:
difference = (date2 - date1)
print(difference)
>> Timedelta('-1 days +20:00:00')
-1 天和 20 小時的 timedelta 意味着 4 小時,事實上,如果我將總秒數轉換為我獲得的小時數:
print(difference.total_seconds()//3600)
>> -4
我希望這會有所幫助。
另一種方法是使用metomi-isodatetime
包。 它由氣象局創建,因此必須符合標准。
此外,該包沒有其他依賴項,因此它是“輕量級”的。
from metomi.isodatetime.parsers import TimePointParser
date1_s = "2019-06-28T05:28:14Z"
date2_s = "2019-06-28T05:28:14-04:00"
date1 = TimePointParser().parse(date1_s)
print(date1)
date2 = TimePointParser().parse(date2_s)
print(date2)
datediff = date2 - date1
print(type(datediff))
print(datediff)
print(datediff.hours)
#
運行上面的將產生以下輸出:
2019-06-28T05:28:14Z
2019-06-28T05:28:14-04:00
<class 'metomi.isodatetime.data.Duration'>
PT4H
4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.