Hướng dẫn how do you add timezone in python? - làm thế nào để bạn thêm múi giờ trong python?
Những gì tôi cần làm Show
Tôi có một đối tượng DateTime không biết thời gian, mà tôi cần thêm một múi giờ để có thể so sánh nó với các đối tượng DateTime nhận biết thời gian khác. Tôi không muốn chuyển đổi toàn bộ ứng dụng của mình thành Timezone không biết cho trường hợp di sản này. Những gì tôi đã thử Đầu tiên, để chứng minh vấn đề:
Đầu tiên, tôi đã thử astimezone:
Không có gì đáng ngạc nhiên khi thất bại này, vì nó thực sự đang cố gắng chuyển đổi. Thay thế dường như là một lựa chọn tốt hơn (theo cách tôi nhận được giá trị của DateTime.Today () trong Python đó là "Timezone Aware"?):
Nhưng như bạn có thể thấy, thay thế dường như đặt tzinfo, nhưng không làm cho đối tượng nhận thức được. Tôi đã sẵn sàng để quay trở lại với bác sĩ chuỗi đầu vào để có múi giờ trước khi phân tích nó (tôi đang sử dụng DateUtil để phân tích cú pháp, nếu điều đó quan trọng), nhưng điều đó có vẻ vô cùng kludgy. Ngoài ra, tôi đã thử điều này trong cả Python 2.6 và Python 2.7, với cùng một kết quả. Định nghĩa bài văn Tôi đang viết một trình phân tích cú pháp cho một số tệp dữ liệu. Có một định dạng cũ tôi cần hỗ trợ trong đó chuỗi ngày không có chỉ báo múi giờ. Tôi đã sửa được nguồn dữ liệu, nhưng tôi vẫn cần hỗ trợ định dạng dữ liệu kế thừa. Chuyển đổi một lần dữ liệu kế thừa không phải là một lựa chọn cho các lý do BS doanh nghiệp khác nhau. Mặc dù nói chung, tôi không thích ý tưởng mã hóa cứng một thời gian mặc định, trong trường hợp này có vẻ như là lựa chọn tốt nhất. Tôi biết với sự tự tin hợp lý rằng tất cả các dữ liệu kế thừa được đề cập là ở UTC, vì vậy tôi đã sẵn sàng chấp nhận rủi ro mặc định trong trường hợp này. Bây giờ, hãy để kiểm tra xem đối tượng có nhận thức được timezone hay không sử dụng phương pháp chúng tôi đã sử dụng trong phần 1 của bài viết. ____10 1 2021-08-30 04:35:37.036990+00:002 12021-08-30T09:45:43.291212+00:009 >>> unaware.astimezone(pytz.UTC)
Traceback (most recent call last):
File " |