如何使用 pytz 和 tzlocal 测试日期时间转换?
Posted
技术标签:
【中文标题】如何使用 pytz 和 tzlocal 测试日期时间转换?【英文标题】:How to test datetime conversion with pytz and tzlocal? 【发布时间】:2015-01-01 02:05:53 【问题描述】:所以我有想要在本地时间向用户显示的日期时间对象。
使用此处已回答的问题,我想出了一个 jinja 过滤器来完成此操作:
from tzlocal import get_localzone
import pytz
def local_datetime(utc_dt):
local_tz = get_localzone()
local_dt = utc_dt.replace(tzinfo=pytz.utc).astimezone(local_tz)
return local_dt.strftime('%m/%d/%y @ %I:%M %p')
app.jinja_env.filters['local_dt'] = local_datetime
user.last_login_at|local_dt # in my template
我的想法是它会在每次有人查看页面时运行(因此是过滤器),以便它始终显示在用户的本地时区中。
它显示在我的开发机器上,但我想确保 get_localzone() 实际上是在抓取用户的本地时区,而不是总是在服务器上。
我的问题是:如何测试这是否正常工作?
【问题讨论】:
我相信get_localtimezone
获取系统的时区,而不是客户端的。
【参考方案1】:
get_localzone()
将始终返回运行您的应用程序的服务器的本地时区。
请求的 HTTP 标头中没有任何内容可以告诉您用户的时区。相反,解决这个问题的标准方法是让用户告诉你他们喜欢的时区。
有关此问题的更多讨论,请参阅Determine a User's Timezone。
【讨论】:
这很糟糕,但我想它可以简化事情。我将在任何地方都使用 UTC,并为用户提供更改它的选项。以上是关于如何使用 pytz 和 tzlocal 测试日期时间转换?的主要内容,如果未能解决你的问题,请参考以下文章
python 使用`pytz`将时间和日期对话转换为其他时区。