2016-02-11 160 views
3

我在理解爲什麼我要獲得結果時遇到了一些麻煩。從一個本地時區到另一個本地時區的Python日期時間轉換(+獎勵DST)

我想嘗試:

  1. 選擇兩個時區,一個使用DST和一個不。例如:羅馬尼亞(dst)和委內瑞拉(沒有dst)。

  2. 對於具有dst的時區,創建兩個日期時間。一個在dst的區間中,另一個不是。羅馬尼亞DST間隔(4-10/4月 - 10月)。例如:

    from datetime import datetime 
    from pytz import timezone 
    
    tz1 = timezone('Europe/Bucharest') 
    tz2 = timezone('America/Caracas') 
    
    date1 = datetime(2016, 5, 5, 5, 0, 0, tzinfo=tz1) # its in the dst interval (5 o'clock, summer - dst) 
    date1 = datetime(2016, 12, 5, 5, 0, 0, tzinfo=tz1) # isn't in the dst interval (5 o'clock, winter - no dst) 
    
    x = date1.astimezone(tz2) 
    y = date2.astimezone(tz2) 
    
  3. 不宜xy的時間不同?由於date1處於DST間隔,因此當日期時間不在DST間隔內時,5點應該表示與date2中的5點不同的小時。

然而,既xy具有相同小時時轉換爲無DST時區。

感謝您的任何解釋。

回答

4

您不能使用datetime構造函數使用pytz時區,則必須使用localize

date1 = tz1.localize(datetime(2016, 5, 5, 5, 0, 0)) 
date2 = tz1.localize(datetime(2016, 12, 5, 5, 0, 0)) 

documentation

不幸的是使用標準的日期時間構造的tzinfo參數''不適用於pytz許多時區。

相關問題