关于 UTC 日期时间转换有很多问题,而且似乎没有就“最佳方式”达成共识。
据此:http ://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,pytz 是最好的方法。他展示了像这样转换为时区,datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
但他没有说如何获取用户的时区......
这家伙https://stackoverflow.com/a/7465359/523051说“localize
调整夏令时,replace
没有”
我看到的每个使用 pytz 的人都在提供他们自己的时区(users_timezone = timezone("US/Pacific")
),我不明白,因为你不知道那是不是你的观众在哪里......
这家伙https://stackoverflow.com/a/4771733/523051有一种自动检测时区的方法,但这是使用dateutil
库,而不是 pytz,正如 Armin Ronacher 和官方 python 文档(http ://docs.python.org/library/datetime.html#strftime-and-strptime-behavior,就在黄色框的那个锚点上方)
我需要的是最简单、面向未来、所有夏令时/等考虑的方式来获取我的 datetime.utcnow() 标记 ( 2012-08-25 10:59:56.511479
),并将其转换为用户的时区。并像这样显示它:
Aug 25 - 10:59AM
如果年份不是当年,我想说
Aug 25 '11 - 10:59AM