如何将本地时间中的datetime字符串转换为UTC时间中的字符串?
我相信我以前做过,但找不到,所以希望将来能帮助我(和其他人)做这件事。
说明:例如,如果我的本地时区(+10
)中有2008-09-17 14:02:00
,我想生成一个具有等效时间UTC
的字符串:2008-09-17 04:02:00
。
另外,从http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/开始,请注意,通常这是不可能的,因为DST和其他问题没有从本地时间到UTC时间的唯一转换。
Tags:
首先,将字符串解析为一个简单的datetime对象。这是
datetime.datetime
的实例,没有附加时区信息。有关分析日期字符串的信息,请参阅datetime.strptime
的文档。使用^{} 模块,该模块附带时区+UTC的完整列表。找出本地时区是什么,从中构造一个时区对象,并操作它并将其附加到原始日期时间。
最后,使用
datetime.astimezone()
方法将datetime转换为UTC。源代码,使用本地时区“美洲/洛杉矶”,用于字符串“2001-2-3 10:11:12”:
在那里,您可以根据需要使用
strftime()
方法格式化UTC日期时间:感谢@rofly,从字符串到字符串的完整转换如下:
我对
time
/calendar
函数的总结:time.strptime
字符串-->;元组(不应用时区,因此与字符串匹配)
time.mktime
本地时间元组-->;自epoch起的秒数(始终为本地时间)
time.gmtime
自epoch以来的秒数-->;UTC中的元组
以及
calendar.timegm
以UTC表示的元组-->;自epoch以来的秒数
time.localtime
从epoch开始的秒数-->;本地时区中的元组
datetime模块的utcnow()函数可用于获取当前的UTC时间。
正如汤姆在上面提到的那样:http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/说:
注意-如果您的任何数据位于使用DST的区域中,请使用
pytz
并查看John Millikin的答案。如果要从给定字符串中获取UTC时间,并且幸运地处于世界上不使用DST的区域,或者您的数据仅与UTC偏移,而不应用DST:
-->;使用本地时间作为偏移值的基础:
-->;或者,从已知偏移量,使用datetime.timedelta():
更新:
因为python 3.2
datetime.timezone
是可用的。您可以使用以下命令生成一个时区感知的datetime对象:如果您准备好进行时区转换,请阅读以下内容:
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7
相关问题 更多 >
编程相关推荐