tzlocal
module trả pytz
múi giờ hoạt động trên * nix và win32:
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
# get local timezone
local_tz = get_localzone()
print local_tz.localize(datetime(2012, 1, 15))
# -> 2012-01-15 00:00:00+04:00 # current utc offset
print local_tz.localize(datetime(2000, 1, 15))
# -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04)
print local_tz.localize(datetime(2000, 6, 15))
# -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST
Lưu ý: tính đến cả thay đổi bù trừ DST và không phải DST.
[' pytz' docs nói rằng 'pytz.reference'] (http://pytz.sourceforge.net/#problems-with-localtime) nên được sử dụng * chỉ cho các bài kiểm tra *. – jfs
Cảnh báo đó áp dụng cho 'reference.USTimeZone', sử dụng các quy tắc trước năm 2007 cho DST Hoa Kỳ. Tuy nhiên 'reference.LocalTimezone', được sử dụng ở đây, thăm dò hành vi của' time.localtime', có độ chính xác được duy trì với các thư viện hệ thống. 'reference.LocalTimezone' cung cấp các chuyển tiếp DST chính xác cả trước và sau khi thay đổi quy tắc của Hoa Kỳ năm 2007; Tôi chưa thử nghiệm cho các quốc gia khác. – rob
@rob: ** sai **. Không sử dụng 'LocalTimezone()'. 'pytz' cung cấp dữ liệu múi giờ * lịch sử * trong khi' time.timezone', 'time.altzone' (được sử dụng bởi' LocalTimezone() ') là hằng số nghĩa là, tốt nhất chúng phản ánh * định nghĩa múi giờ gần đây nhất *. Múi giờ địa phương có thể có các chênh lệch utc khác nhau trong quá khứ/tương lai, ví dụ: thử múi giờ Châu Âu/Moscow trong năm 2010-2015 và xem điều gì xảy ra cho chính bạn. – jfs