【发布时间】:2012-04-19 05:20:28
【问题描述】:
[编辑] 而且,我应该最优雅地补充一下?我想(但不确定如何)我可以先循环遍历 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))
我认为我可以在模板代码中类似地应用一些魔法 - 但似乎 date built-in 允许格式化日期时间而不是从 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>
【问题讨论】:
标签: python django google-app-engine timezone pytz