【问题标题】:Why do my dates and times differ?为什么我的日期和时间不同?
【发布时间】:2015-10-01 04:27:14
【问题描述】:

我的 jinja2 模板代码中有用于本地化的代码。

{% set currency = "SEK" %}
{% set format = "sv_SE" %}
{% set timezoneinfo = 'Europe/Stockholm' %}
{% set locale = "se" %}

但是,如果我像这样使用它与使用来自谷歌搜索 API 结果的值进行过滤的过滤器一起使用它,它不会工作数小时和数分钟。

{{scored_document.fields.10.value|datetimeformat_list(hour=scored_document.fields.17.value|int ,minute =scored_document.fields.18.value|int, timezoneinfo=timezoneinfo, locale=locale)}}

过滤器

def datetimeformat_list(date, hour, minute, locale='en', timezoneinfo='Asia/Calcutta'):
    tzinfo = timezone(timezoneinfo)
    input = datetime(date.year, date.month, date.day, int(hour), int(minute), tzinfo=tzinfo)
    time_str = format_time(input, 'H:mm', tzinfo=tzinfo, locale=locale)
    return "{0}".format(time_str)

代码给出的时间与我做的不同

{{ ad.modified|datetimeformat_viewad(locale='se', timezoneinfo='Europe/Stockholm') }}

使用此过滤器

def datetimeformat_viewad(to_format, locale='en', timezoneinfo='Asia/Calcutta'):
    tzinfo = timezone(timezoneinfo)
    month = MONTHS[to_format.month - 1]
    date_str = '{0} {1}'.format(to_format.day, _(month))
    time_str = format_time(to_format, 'H:mm', tzinfo=tzinfo, locale=locale)
    return "{0} {1}".format(date_str, time_str)

为什么输出的时间不一样?

【问题讨论】:

  • 我认为您没有提供足够的信息。您谈到了过滤器,但您还没有说您是否使用数据存储、文本搜索或其他东西,您是否也在应用您的过滤器。

标签: python google-app-engine localization timezone jinja2


【解决方案1】:

直接将任意pytz时区传递给datetime构造函数是不正确的;你应该改用pytz_tzinfo.localize() 方法,正如pytz docs 开头所说的那样。

您的代码中可能存在其他问题。

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 1970-01-01
    • 2021-12-24
    • 2014-02-02
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多