datetime - 在 python 中,将UTC字符串转换为本地日期时间字符串?

  显示原文与译文双语对照的内容

这个问题已经有了如下答案:

我没有时区的名称,只有一个偏移值,如 +0400

我的日期时间字符串为 UTC: 像 2014-01-07T09:29:35Z

我需要一个本地时间的字符串,像 2014-01-07T13:29:35

如何执行这里操作?

时间: 作者:

你可以编写一个函数来转换字符串格式。


from datetime import datetime, timedelta
old_time = '2014-01-07T09:29:35Z'

def time_converter(old_time, time_zone):
 time_zone = float(time_zone[:3] + ('.5' if time_zone[3] == '3' else '.0'))
 str_time = datetime.strptime(old_time,"%Y-%m-%dT%H:%M:%SZ")
 return (str_time + timedelta(hours=time_zone)).strftime("%Y-%m-%dT%H:%M:%SZ")

if __name__ == '__main__':
 for time_zone in ('+0400', '+0430', '-1400'):
 print(time_converter(old_time, time_zone))

输出:


2014-01-07T13:29:35Z
2014-01-07T13:59:35Z
2014-01-06T19:29:35Z

作者:

你还可以创建timezone类,以创建时区感知的datetime对象:


from datetime import tzinfo, timedelta, datetime

class myTimeZone(tzinfo):
 def utcoffset(self, dt):
 return timedelta(hours=4)
 def dst(self, dt):
 return timedelta(hours=0)

class utcTimeZone(tzinfo):
 def utcoffset(self, dt):
 return timedelta(hours=0)
 def dst(self, dt):
 return timedelta(hours=0)

d = datetime.strptime("2014-01-07T09:29:35Z","%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=utcTimeZone())
print(d.astimezone(myTimeZone()).isoformat()) # Prints '2014-01-07T13:29:35+04:00'

...