我从来不需要在 UTC 之间转换时间。最近有一个请求让我的应用程序能够识别时区,而我一直在兜圈子。很多关于将本地时间转换为 UTC 的信息,我发现这些信息相当初级(也许我也做错了),但我找不到任何关于轻松将 UTC 时间转换为最终用户时区的信息。
简而言之,android 应用程序向我(appengine 应用程序)发送数据,并且该数据中有一个时间戳。要将该时间戳存储为我正在使用的 utc 时间:
datetime.utcfromtimestamp(timestamp)
这似乎有效。当我的应用程序存储数据时,它会提前 5 小时存储(我是 EST -5)
数据存储在 appengine 的 BigTable 中,当检索到它时,它会以字符串形式出现,如下所示:
"2011-01-21 02:37:21"
如何将此字符串转换为用户正确时区的 DateTime?
另外,用户时区信息的推荐存储是什么? (您通常如何存储 tz 信息,即:“-5:00”或“EST”等等?)我确定我的第一个问题的答案可能包含第二个答案的参数。
原文由 MattoTodd 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您不想提供自己的
tzinfo
对象,请查看 python-dateutil 库。它提供tzinfo
在 zoneinfo (Olson) 数据库 之上的实现,这样您就可以通过某种规范的名称来引用时区规则。编辑 扩展示例以显示
strptime
用法编辑 2 固定 API 用法以显示更好的入口点方法
编辑 3 包含时区自动检测方法 (Yarin)