如何在Python中找到不同时区的时间差异?

Jas*_*onA 5 python timezone datetime

我试图计算格式如下的两个日期/时间之间的差异(以秒为单位):

2010-05-11 17:07:33 UTC

2010-05-11 17:07:33美国东部时间

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"))
Run Code Online (Sandbox Code Playgroud)

我得到的问题是EDT无法识别,具体错误是

ValueError: time data '2010-05-11 17:07:33 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z'
Run Code Online (Sandbox Code Playgroud)

Dol*_*lph 8

查看pytz世界时区定义库.

该库允许使用Python 2.3或更高版本进行准确的跨平台时区计算.它还解决了夏令时结束时模糊时间的问题,您可以在Python库参考(datetime.tzinfo)中阅读更多相关内容.

它利用了tz数据库,它应该包含EDT,并允许您执行所需的计算(并且可能比您当前的实现更可靠和准确).


Han*_*Gay 8

除了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)
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的...relativedelta 不考虑时区。我刚刚尝试过,伦敦和巴黎之间有 2 秒的差异(2 秒 = 我输入函数所需的时间) (2认同)