Bạn có thể xem qua thành viên _utc_transition_times
của múi giờ bạn đang sử dụng.
>>> 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)]
Nó sẽ cung cấp cho bạn danh sách ngày thay đổi DST (bắt đầu và kết thúc DST).
Theo mã của 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
Vì vậy, nếu bạn trộn _utc_transition_times
với _transition_info
bạn sẽ lấy tất cả của bạn thông tin cần thiết, ngày, giờ và bù đắp để áp dụng;)
Mà năm ? Điểm thay đổi DST đã thay đổi trong lịch sử ở một số múi giờ. – eumiro
Vâng, lý tưởng tôi muốn có thể làm điều đó trong một năm tùy ý. Tôi biết loại thông tin này có sẵn trong cơ sở dữ liệu Olsen, nhưng việc truy cập nó là một vấn đề khác. – Smingos