2012-06-21 25 views
5

Tôi gặp khó khăn khi chuyển đổi chuỗi đại diện của thời gian không UTC thành UTC do từ viết tắt múi giờ.Chuyển đổi chuỗi thời gian không UTC với từ viết tắt múi giờ thành thời gian UTC bằng python, trong khi tính toán tiết kiệm ánh sáng ban ngày

(Cập nhật:.. Có vẻ như rằng timezone abbreviations may not be unique nếu như vậy, có lẽ tôi nên cũng phải cố gắng để thực hiện việc này vào tài khoản)

Tôi đã cố gắng để tìm một con đường xung quanh này bằng datetutil và pytz, nhưng không có may mắn.

Đề xuất hoặc giải pháp thay thế sẽ được đánh giá cao.

string = "Jun 20, 4:00PM EDT" 

Tôi muốn chuyển đổi thành thời gian UTC, tính toán tiết kiệm ánh sáng ban ngày khi thích hợp.

UPDATE: Tìm thấy một số tài liệu tham khảo có thể giúp người dùng có kinh nghiệm hơn trả lời Q.

Về cơ bản, tôi sẽ tưởng tượng một phần của giải pháp làm ngược lại của this.

CẬP NHẬT CUỐI CÙNG (QUAN TRỌNG)

Taken từ dateutil docs examples.

Một số ví dụ đơn giản dựa trên lệnh ngày, sử dụng từ điển TZOFFSET để cung cấp bù đắp múi giờ BRST.

phân tích cú pháp ("Thu Sep 25 10:36:28 BRST 2003", tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, tzinfo = tzoffset ('BRST', -10800))

phân tích cú pháp ("2003 10:36:28 BRST 25 Sep Thu", tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, tzinfo = tzoffset ('BRST', -10800))

Kết hợp thư viện này với thư viện such as found here. và bạn sẽ có giải pháp cho vấn đề này.

+0

giá trị gì nên được sử dụng cho cả năm? Hiện hành? – Bryan

+0

@ beargle - vâng. tôi sẽ giả định hiện tại cho tất cả các đầu ra này. – snakesNbronies

+0

Có, các từ viết tắt múi giờ không phải là duy nhất trên toàn thế giới. Bạn có thể giả định một quốc gia? –

Trả lời

5

Sử dụng chữ viết tắt múi giờ Nas Banov's excellent dictionary bản đồ để UTC offset:

import dateutil 
import pytz 

# timezone dictionary built here: https://stackoverflow.com/a/4766400/366335 
# tzd = {...} 

string = 'Jun 20, 4:00PM EDT' 
date = dateutil.parser.parse(string, tzinfos=tzd).astimezone(pytz.utc) 
+0

Tôi chỉ là về để quay lại với bản cập nhật về các thư viện. – snakesNbronies

Các vấn đề liên quan