如何在Python中计算不同时区间的时间差?
我正在尝试计算两个日期/时间之间的差值(以秒为单位),它们的格式如下:
2010-05-11 17:07:33 UTC
2010-05-11 17:07:33 EDT
time1 = '2010-05-11 17:07:33 UTC'
time2 = '2010-05-11 17:07:33 EDT'
delta = time.mktime(time.strptime(time1,"%Y-%m-%d %H:%M:%S %Z"))-\
time.mktime(time.strptime(time2, "%Y-%m-%d %H:%M:%S %Z"))
我遇到的问题是,EDT这个时间格式没有被识别,具体的错误是
ValueError: time data '2010-05-11 17:07:33 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z'
3 个回答
0
来自strptime的文档
%Z这个指令的支持是基于tzname中的值,以及是否处于夏令时。因此,这个功能会因平台而异,除了能够识别UTC和GMT这两个时间,因为它们总是被认定为不受夏令时影响的时区。
5
除了 pytz
之外,你还可以看看 python-dateutil
。里面的 relativedelta
功能非常棒。
下面是一个将它们一起使用的示例:
from datetime import datetime
from dateutil.relativedelta import *
import pytz
if __name__ == '__main__':
date_one = datetime.now(pytz.timezone('US/Eastern'))
date_two = datetime.now(pytz.timezone('US/Mountain'))
rdelta = relativedelta(date_one, date_two)
print(rdelta)