将CST转换为UTC

时间:2018-11-13 17:37:37

标签: python datetime

如何通过此代码将CST转换为UTC?

str(datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")) + "Z" 

这是预定义的,我的UI在CST中,API要在UTC中。那么,如何使用相同的代码将CST转换为UTC?

1 个答案:

答案 0 :(得分:0)

预先发表评论:如果您实际使用的是datetime.datetime.utcnow(),则无需进行任何转换。这是UTC时间,尽管从技术上讲它是天真的日期时间,因为它没有附加.tzinfo属性。 (而且您也不需要致电str。)


否则,假设您的输入时间实际上是基于本地的(不使用.utcnow()),则可以使用time.timezone来获取时间增量。这是我系统中的一个示例,即EST:

>>> import datetime
>>> import time

>>> localtime = datetime.datetime.now()
>>> localtime
datetime.datetime(2018, 11, 13, 13, 22, 54, 109529)
>>> datetime.datetime.utcnow()
datetime.datetime(2018, 11, 13, 18, 23, 3, 373213)

>>> convrt = localtime + datetime.timedelta(
...     seconds=time.timezone)
>>> 
>>> convrt
datetime.datetime(2018, 11, 13, 18, 22, 54, 109529)
>>> convrt.replace(tzinfo=datetime.timezone.utc).isoformat()
'2018-11-13T18:22:54.109529+00:00'

请注意,.isoformat()使用数字偏移量。要获取名称,请使用%Z

>>> convrt.replace(tzinfo=datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S%Z")
'2018-11-13T18:22:54UTC'

time.timezone是本地时间(非DST)时区的偏移量,以UTC以西为秒。还有time.altzone,它是本地DST时区(西数秒)的偏移量。