为什么我的日期和时间会有所不同?

时间:2015-07-13 01:41:21

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

我的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)

为什么输出不是同一时间?

1 个答案:

答案 0 :(得分:1)

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

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