如何使用pytz和tzlocal测试日期时间转换?

时间:2014-11-05 00:33:34

标签: python datetime flask jinja2 pytz

所以我想要在当地时间为用户显示日期时间对象。

在这里使用已回答的问题,我想出了一个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()实际上抓住用户的本地时区而不是服务器的时区。

我的问题是:如何测试这是否正常?

1 个答案:

答案 0 :(得分:3)

get_localzone()将始终返回运行应用程序的服务器的本地时区。

请求的HTTP标头中没有任何内容可以告诉您用户的时区。相反,接近这个的标准方法是要求用户告诉你他们的首选时区。

有关此问题的详细讨论,请参阅Determine a User's Timezone