Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将GQLQuery的日期字段轻松格式化为另一个时区?_Python_Django_Google App Engine_Timezone_Pytz - Fatal编程技术网

Python 如何将GQLQuery的日期字段轻松格式化为另一个时区?

Python 如何将GQLQuery的日期字段轻松格式化为另一个时区?,python,django,google-app-engine,timezone,pytz,Python,Django,Google App Engine,Timezone,Pytz,[编辑]还有,我应该补充一句,最优雅的?我想(但不确定如何)我可以先循环python代码中的结果,然后在那里格式化每个日期,但我宁愿只循环一次…[\Edit] 就我而言,英国夏季时间(最近刚刚开始) 目前,我的最上面的直接格式化日期是正确的,但结果中各行的日期仍然是UTC(落后1小时)。示例输出是一个模板化页面,如下所示(其中,datetime.now返回的UTC在本例中为12:42): 现在的时间是:2012年4月5日13:42 2012-04-05 13:10:00事件234 2012-04

[编辑]还有,我应该补充一句,最优雅的?我想(但不确定如何)我可以先循环python代码中的结果,然后在那里格式化每个日期,但我宁愿只循环一次…[\Edit]

就我而言,英国夏季时间(最近刚刚开始)

目前,我的最上面的直接格式化日期是正确的,但结果中各行的日期仍然是UTC(落后1小时)。示例输出是一个模板化页面,如下所示(其中,
datetime.now
返回的UTC在本例中为12:42):

现在的时间是:2012年4月5日13:42

2012-04-05 13:10:00事件234

2012-04-05 13:10:00事件235

2012-04-05 13:10:00事件236

这是我正在做的

from pytz.gae import pytz  # N.B. Using the recommended version of pytz
from datetime import datetime

# Use datetime now (in UTC) to select upcoming events (also stored in UTC)

nowat = datetime.now()
upcoming_events = db.GqlQuery(
  "SELECT * FROM Event WHERE eventdatetime >= :1",nowat)

# Convert time to BST and print to string…

utc = pytz.timezone('UTC')
nowat = utc.localize(nowat)
bst = pytz.timezone('Europe/London')
timenow = nowat.astimezone(bst).strftime("%H:%M on %d %B, %Y")

# Pass results to template for formating… (this is the Django engine)

template_values = {
        'time' : timenow,
        'events' : upcoming_events
 }
path = os.path.join(os.path.dirname(__file__),'html','today.html')
self.response.out.write(template.render(path,template_values))
我认为在模板代码中可能会有一些类似的魔力,但似乎
日期
允许格式化日期时间,而不是从UTC转换

模板为:

<html>
  <head>
    <link type="text/css" rel="stylesheet" href="/css/main.css" />
  </head>
  <body>
    <p>Time is now: {{ time }}</p>
    <table>
      {% for event in events %} 
        <tr>
          <td> {{ event.eventdatetime }} </td>
          <td> {{ event.name }} </td>
        </tr>
      {% endfor %}  
    </table>
  </body>
</html>

现在的时间是:{Time}

{events%%中事件的百分比} {{event.eventdatetime} {{event.name} {%endfor%}
使用django的模板引擎,您可以使用

文档中的示例用法:

{% load tz %}

{% timezone "Europe/Paris" %}
    Paris time: {{ value }}
{% endtimezone %}

{% timezone None %}
    Server time: {{ value }}
{% endtimezone %}

使用django的模板引擎,您可以使用

文档中的示例用法:

{% load tz %}

{% timezone "Europe/Paris" %}
    Paris time: {{ value }}
{% endtimezone %}

{% timezone None %}
    Server time: {{ value }}
{% endtimezone %}

这看起来很棒-但不幸的是,我尝试了它并得到了以下结果:
TemplateSyntaxError:'tz'不是有效的标记库:无法从django.templatetags.tz加载模板库,没有名为tz的模块
-所以我不确定GAE提供了什么模块…如果没有包括在内,您可以将该标记的django源代码粘贴到您自己的模板标记中,如下所述:谢谢。成功了。破解“tz”标记代码有点痛苦。我在GAE中得到了相同的TemplateSyntaxError。不幸的是,链接不再起作用,我找不到任何资源来解释如何做到这一点。您能解释一下,或者让我参考一个资源来解释如何添加tz模块吗?看起来很好-但不幸的是,我尝试了一下,得到了以下结果:
TemplateSyntaxError:'tz'不是有效的标记库:无法从django.templatetags.tz加载模板库,没有名为tz的模块
-因此我不确定GAE提供了什么模块…如果没有包括,您可以将该标记的django源代码粘贴到您自己的模板标记中,如下所述:谢谢。成功了。破解“tz”标记代码有点痛苦。我在GAE中得到了相同的TemplateSyntaxError。不幸的是,链接不再起作用,我找不到任何资源来解释如何做到这一点。您能否解释一下,或者让我参考一下解释如何添加tz模块的资源?