datetime模块的utcnow()函数可用于获取当前UTC时间。
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
正如汤姆在上面提到的链接:http : //lucumr.pocoo.org/2011/7/15/eppur-si-muove/ 所说:
UTC是没有夏令时的时区,并且仍然是过去没有配置更改的时区。
始终在UTC中测量和存储时间。
如果您需要记录时间,将其分开存储。
不要存储本地时间+时区信息!
注意 -如果您的任何数据位于使用DST的区域中,请使用pytz
并查看John Millikin的答案。
如果您想从给定的字符串中获取UTC时间,并且很幸运地处于世界上不使用DST的区域中,或者您的数据仅与UTC偏移而未应用DST:
->使用本地时间作为偏移值的基础:
>>> # 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'
->或者,使用已知的偏移量,使用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'
更新:
由于python 3.2 datetime.timezone
可用。您可以使用以下命令生成时区感知日期时间对象:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
如果您准备进行时区转换,请阅读以下内容:
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7