Có rất nhiều câu hỏi về chuyển đổi datetime UTC và dường như không có sự nhất trí về "cách tốt nhất".Làm thế nào để, với python, có một datetime UTC, autodetect người dùng múi giờ, và chuyển đổi datetime để định dạng mong muốn?
Theo điều này: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/, pytz là cách tốt nhất để thực hiện. ông cho thấy chuyển sang múi giờ như datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
này nhưng ông không nói như thế nào để có được múi giờ của người dùng ...
anh chàng này https://stackoverflow.com/a/7465359/523051 nói "localize
điều chỉnh cho Daylight Savings Time, replace
không"
Mọi người thấy tôi sử dụng pytz đang cung cấp múi giờ của riêng mình (users_timezone = timezone("US/Pacific")
), mà tôi không hiểu vì bạn không thể biết liệu đó có phải là nơi mà người xem của bạn ...
Anh chàng này https://stackoverflow.com/a/4771733/523051 có cách tự động phát hiện múi giờ, nhưng điều này đang sử dụng thư viện dateutil
và không phải pytz, như được đề xuất bởi cả Armin Ronacher và tài liệu chính thức của python (http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior, ngay phía trên cái neo đó trong hộp màu vàng)
Tất cả những gì tôi cần là đơn giản nhất, trong tương lai, bằng chứng, tiết kiệm ánh sáng ban ngày/etc được xem xét để lấy dấu ngày giờ của tôi. 2012-08-25 10:59:56.511479
), chuyển đổi múi giờ của người dùng. Và hiển thị nó như thế này:
Aug 25 - 10:59AM
và nếu năm nay không phải là năm nay, tôi muốn nói
Aug 25 '11 - 10:59AM
tôi đã học được rằng tzlocal() không làm việc ở tất cả trên heroku. Hàm trên chỉ đơn giản là trả về thời gian UTC. – chrickso
cũng lưu ý, tôi đã mất tất cả hy vọng rằng đó là cách đáng tin cậy để xác định chính xác múi giờ của người dùng và điều chỉnh thời gian tự động. tôi thấy rằng twitter có cài đặt để điều chỉnh múi giờ của bạn vì vậy đây phải là cách: lưu trữ tùy chọn của người dùng và sử dụng tùy chọn đó cho chuyển đổi. – chrickso