簡體   English   中英

如何在Python中找到不同時區的時間差異?

[英]How do I find difference between times in different timezones in Python?

我試圖計算格式如下的兩個日期/時間之間的差異(以秒為單位):

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"))

我得到的問題是EDT無法識別,具體錯誤是

ValueError: time data '2010-05-11 17:07:33 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z'

查看pytz世界時區定義庫。

該庫允許使用Python 2.3或更高版本進行准確的跨平台時區計算。 它還解決了夏令時結束時模糊時間的問題,您可以在Python庫參考(datetime.tzinfo)中閱讀更多相關內容。

它利用了tz數據庫 ,它應該包含EDT,並允許您執行所需的計算(並且可能比您當前的實現更可靠和准確)。

除了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)

來自strptime的文檔

對%Z指令的支持基於tzname中包含的值以及日光是否為真。 因此,它是特定於平台的,除了識別始終已知的UTC和GMT(並且被認為是非夏令時時區)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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