Python-将UTC日期时间字符串转换为本地日期时间
我从来没有不得不将时间与UTC转换。最近有人要求我的应用注意时区,并且我一直在圈子里奔波。我发现很多有关将本地时间转换为UTC的信息,这很基本(也许我也做错了),但是我找不到任何有关将UTC时间轻松转换为最终用户时区的信息。
简而言之,android应用程序向我发送了(appengine应用程序)数据,该数据中包含时间戳。要将时间戳存储为UTC时间,我正在使用:
datetime.utcfromtimestamp(timestamp)
那似乎行得通。当我的应用存储数据时,存储时间要提前5个小时(我是EST -5)
数据存储在Appengine的BigTable上,并且在检索时会以字符串形式显示,如下所示:
"2020-01-21 02:37:21"
如何在用户正确的时区将此字符串转换为DateTime?
另外,建议为用户存储的时区信息是什么?(你通常如何存储tz信息,即:“-5:00”或“ EST”等?)我确定第一个问题的答案可能包含一个参数,第二个问题的答案。
回答:
如果你不想提供自己的tzinfo对象,请签出python-dateutil
库。它tzinfo
在zoneinfo
(Olson)数据库的顶部提供了实现,因此你可以使用一些规范的名称来引用时区规则。
from datetime import datetimefrom dateutil import tz
# METHOD 1: Hardcode zones:
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('America/New_York')
# METHOD 2: Auto-detect zones:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()
# utc = datetime.utcnow()
utc = datetime.strptime('2020-01-21 02:37:21', '%Y-%m-%d %H:%M:%S')
# Tell the datetime object that it's in UTC time zone since
# datetime objects are 'naive' by default
utc = utc.replace(tzinfo=from_zone)
# Convert time zone
central = utc.astimezone(to_zone)
编辑扩展示例以显示strptime用法
以上是 Python-将UTC日期时间字符串转换为本地日期时间 的全部内容, 来源链接: utcz.com/qa/406795.html