如何获得具有不同 ISO 格式的 2 个日期之间的差异?
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
-formatted.
这是我尝试使用这个库 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 小时的差异。如何计算两种不同日期格式之间 hours/days 的差异?
我正在使用 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 小时的时间增量意味着 4 小时,事实上,如果我将总秒数转换为小时,我将获得:
print(difference.total_seconds()//3600)
>> -4
希望对您有所帮助。
另一种方法是使用 metomi-isodatetime
package. It's created by the Met Office,因此 必须 为 standards-compliant。
此外,该软件包没有其他依赖项,因此它是 'lightweight'。
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
我需要计算 2 个不同格式的 ISO 日期之间的差异。例如,2019-06-28T05:28:14Z
和 2019-06-28T05:28:14-04:00
。这里的大多数答案只关注一种或另一种格式,即 Z
-formatted.
这是我尝试使用这个库 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 小时的差异。如何计算两种不同日期格式之间 hours/days 的差异?
我正在使用 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 小时的时间增量意味着 4 小时,事实上,如果我将总秒数转换为小时,我将获得:
print(difference.total_seconds()//3600)
>> -4
希望对您有所帮助。
另一种方法是使用 metomi-isodatetime
package. It's created by the Met Office,因此 必须 为 standards-compliant。
此外,该软件包没有其他依赖项,因此它是 'lightweight'。
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