Tôi đang gặp sự cố khi hiểu sự chuyển đổi giữa múi giờ "Etc/GMT-5" và UTC trong pytz.pytz và Etc/GMT-5
>>> dt = datetime(2009, 9, 9, 10, 0) # September 9 2009, 10:00
>>> gmt_5 = pytz.timezone("Etc/GMT-5")
>>> gmt_5.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=<StaticTzInfo 'Etc/GMT-5'>)
Mọi thứ đều tốt đẹp cho đến nay, nhưng sau đó tôi cố gắng chuyển đổi đó để UTC:
>>> gmt_5.localize(dt).astimezone(pytz.utc)
datetime.datetime(2009, 9, 9, 5, 0, tzinfo=<UTC>)
Vì vậy, đối với tôi dường như khi chuyển đổi từ 10:00 tại GMT-5 đến UTC tôi nhận được 05:00? Tôi hy vọng pytz sẽ cho tôi 15:00 thay vào đó.
Tôi đang thiếu gì?
EDIT: Tôi đã xác nhận rằng múi giờ chuyển đổi cho/múi giờ Đông Mỹ chỉ hoạt động như tôi mong đợi:
>>> eastern = pytz.timezone("US/Eastern")
>>> eastern.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=...) # Too long
>>> pytz.utc.normalize(eastern.localize(dt).astimezone(pytz.utc))
datetime.datetime(2009, 9, 9, 14, 0, tzinfo=<UTC>)
EDIT 2: Tôi đã xác nhận rằng khi tôi sử dụng Etc/GMT +5 Tôi nhận được 15:00, đó là những gì tôi mong đợi để nhận được từ Etc/GMT-5. Đây có phải là lỗi pytz không?
Bạn đã đánh bại câu trả lời của riêng mình sau 23 giây! :) –