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

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

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

或者更精确地构建问题的方法:获取客户端时区并将python datetime对象转换为自己的本地时间的最佳方法是什么?

最佳答案
这是一个Python问题,而不是GAE问题,除非GAE有一些基础设施来促进这一点(我做了一个快速扫描,但没有找到任何参考).

基本上,您希望以UTC时区存储日期/时间(例如使用datetime.datetime.utcnow)以及用户时区,您可以尝试从用户IP中提取(使用GeoDjango,如果可以在GAE上使用,或者是pygeoip;您需要一些地理位置数据库如:http://www.maxmind.com/app/geolitecity),或明确询问用户有关它 – 这有利于你可以要求描述时区名称,如“欧洲/华沙”.如果你只要求UTC 2,那么你就会失去DST转换的任何迹象.

然后,您可以使用例如从utc切换到所需的时区. 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日期时间转换为用户的本地日期和时间 - 代码日志