我正在尋找一種方法來確定DST何時開始或結束在我正在處理的Python腳本中的給定時區。如何確定DST何時在Python中的特定位置開始或結束?
我知道pytz可以將我工作的UTC日期轉換爲本地時間,並將DST考慮在內,但對於此特定應用程序,我需要知道轉換的重點。
有什麼建議嗎?
我正在尋找一種方法來確定DST何時開始或結束在我正在處理的Python腳本中的給定時區。如何確定DST何時在Python中的特定位置開始或結束?
我知道pytz可以將我工作的UTC日期轉換爲本地時間,並將DST考慮在內,但對於此特定應用程序,我需要知道轉換的重點。
有什麼建議嗎?
你可以看看你正在使用的時區的_utc_transition_times
成員。
>>> from pytz import timezone
>>> tz = timezone("Europe/Paris")
>>> print tz._utc_transition_times
[datetime.datetime(1, 1, 1, 0, 0), datetime.datetime(1911, 3, 10, 23, 51, 39), datetime.datetime(1916, 6, 14, 23, 0), datetime.datetime(1916, 10, 1, 23, 0), date
....
datetime.datetime(2037, 3, 29, 1, 0), datetime.datetime(2037, 10, 25, 1, 0)]
它會給你DST更改日期列表(DST的開始和結束)。
根據tzinfo.py的代碼
class DstTzInfo(BaseTzInfo):
'''A timezone that has a variable offset from UTC
The offset might change if daylight savings time comes into effect,
or at a point in history when the region decides to change their
timezone definition.
'''
# Overridden in subclass
_utc_transition_times = None # Sorted list of DST transition times in UTC
_transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
# to _utc_transition_times entries
所以,如果你混合_utc_transition_times
與_transition_info
你會抓住你所有需要的信息,日期,時間和偏移申請;)
對於哪一年? DST變化點在某些時區的歷史中發生了變化。 – eumiro
那麼,理想情況下,我希望能夠在任意一年做到這一點。我知道奧爾森數據庫中有這種信息,但訪問它是另一回事。 – Smingos