Hàm utcnow () của mô đun datetime có thể được sử dụng để lấy thời gian UTC hiện tại.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Như liên kết được đề cập ở trên bởi Tom: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ nói:
UTC là múi giờ không tiết kiệm thời gian ban ngày và vẫn là múi giờ mà không thay đổi cấu hình trong quá khứ.
Luôn đo lường và lưu trữ thời gian trong UTC .
Nếu bạn cần ghi lại thời gian đã được thực hiện, hãy lưu trữ riêng biệt.
Không lưu trữ thông tin giờ địa phương + múi giờ!
LƯU Ý - Nếu bất kỳ dữ liệu nào của bạn nằm trong khu vực sử dụng DST, hãy sử dụng pytz
và xem câu trả lời của John Millikin.
Nếu bạn muốn có được thời gian UTC từ một chuỗi nhất định và bạn đủ may mắn ở một khu vực trên thế giới không sử dụng DST hoặc bạn có dữ liệu chỉ được bù từ UTC mà không áp dụng DST:
-> sử dụng giờ địa phương làm cơ sở cho giá trị bù:
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
-> Hoặc, từ một phần bù đã biết, sử dụng datetime.timedelta ():
>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
CẬP NHẬT:
Vì python 3.2 datetime.timezone
có sẵn. Bạn có thể tạo một đối tượng datetime nhận biết múi giờ bằng lệnh bên dưới:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Nếu bạn sẵn sàng thực hiện chuyển đổi múi giờ, hãy đọc điều này:
https://medium.com/@eleroy/10-things-you-need-to-ledge-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7