python - 将 UTC 日期时间转换为用户的本地日期和时间

标签 python django google-app-engine localization

我在 Django 和 Google App Engine 上使用 python。我还在我的一个模型中使用 DateTimeProperty。有时我想向用户显示该日期和时间。

将存储在 DateTimeProperty 中的日期时间转换为用户的日期时间的最佳方法是什么?

或者更精确地提出问题:获取客户时区并将 python 日期时间对象转换为他们自己的本地时间的最佳方法是什么?

最佳答案

这更像是一个 Python 问题,而不是 GAE 问题,除非 GAE 有一些基础设施来促进这一点(我已经快速扫描但没有找到任何引用)。

基本上,您想将日期/时间存储在 UTC 时区(例如使用 datetime.datetime.utcnow)以及用户时区,您可以尝试从用户 IP 中提取(使用 GeoDjango,如果在 GAE 上可用,或 pygeoip ; 您需要一些地理定位数据库,例如:http://www.maxmind.com/app/geolitecity ),或明确询问用户 - 其优点是您可以要求提供描述性时区名称,例如“Europe/Warsaw”。如果您只要求 UTC+2,那么您将丢失任何 DST 转换的指示。

然后,您可以使用例如pytz :

import pytz
local_tz = pytz.timezone(timezone_name)
return timestamp_utc.replace(tzinfo=pytz.utc).astimezone(local_tz).replace(tzinfo=None)

-- 其中 timestamp_utc 是要转换的 utc 日期时间,而 timezone_name 是提到的“Europe/Warsaw”。

(请注意,我不知道这些中的哪些在 GAE 中有效,但至少你会知道要寻找什么)

关于python - 将 UTC 日期时间转换为用户的本地日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115310/

相关文章:

python - 不能从 python 漂亮地打印 json

python - Python 中的另一个类可以调用一个函数返回的内容吗?

rest - 如何使用rest api将数据上传到谷歌云存储

image - 如何在 HTML5 Canvas 上呈现 AppEngine blobstore 图像?

python - Python 中的异常处理(webapp2、Google App Engine)

python - 如何将 boto3 Dynamo DB 项目转换为 Python 中的常规字典?

python - 如何训练 tensorflow 模型准确区分睁眼和闭眼?

python - 找不到 msguniq。确保安装了 GNU gettext 工具 0.15 或更新版本。 (Django 1.8 和 OSX ElCapitan)

django - 如何使用内置的 django_wsgi 使 url 在 GAE 上安全

ios - 设置Referer header有安全风险吗?