Tôi đang cố gắng chuyển đổi dấu thời gian ngây thơ luôn ở thời gian Thái Bình Dương thành UTC. Trong đoạn code dưới đây, tôi có thể chỉ định rằng dấu thời gian này tôi có là trong thời gian Thái Bình Dương, nhưng nó dường như không biết rằng nó phải là một bù đắp -7 giờ từ UTC bởi vì nó chỉ có 10/21 và DST có chưa kết thúc.Python: Cách chuyển đổi dấu thời gian nhận biết múi giờ thành UTC mà không biết liệu DST có hiệu lực không
Kịch bản:
import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone('America/Los_Angeles')
date_aware_la = naive_date.replace(tzinfo=localtz)
print date_aware_la
Đầu ra:
2013-10-21 08:44:08-08:00
Nó cần phải có một offset của -07: 00 đến DST kết thúc vào ngày 03 tháng 11. Làm thế nào tôi có thể nhận được ngày nhận biết múi giờ của tôi để có bù đắp chính xác khi DST và không có hiệu lực? Pytz có đủ thông minh để biết rằng DST sẽ có hiệu lực vào ngày 3 tháng 11 không?
Mục tiêu tổng thể: Tôi chỉ đang cố chuyển đổi dấu thời gian thành UTC khi biết rằng tôi sẽ nhận được dấu thời gian trong khoảng thời gian bình thường mà không có bất kỳ dấu hiệu nào cho dù DST có hiệu lực hay không. Tôi không tạo ra ngày này từ python, vì vậy tôi không thể sử dụng utc_now().
để khẳng định rằng 'naive_date' là rõ ràng và tồn tại, bạn có thể vượt qua 'is_dst = None' cho' bản địa hoá() '; nếu không thì thời gian sai có thể được chọn âm thầm. – jfs