簡體   English   中英

如何獲得不同ISO格式的2個日期之間的差異?

[英]How to get difference between 2 dates with different ISO format?

我需要計算 2 個不同格式的 ISO 日期之間的差異。 例如, 2019-06-28T05:28:14Z2019-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.

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