gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:06 32 4
gpt4 key购买 nike

[编辑]而且,我应该补充一点,最优雅的是?我想(但不确定如何)我可以先循环遍历 python 代码中的结果并格式化那里的每个日期,但我宁愿只循环一次...[\Edit]

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

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

Time is now: 13:42 on 05 April, 2012

2012-04-05 13:10:00 Event 234

2012-04-05 13:10:00 Event 235

2012-04-05 13:10:00 Event 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>

最佳答案

借助django的模板引擎,可以使用Time zone aware output in templates

文档中的示例用法:

{% load tz %}

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

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

关于python - 如何轻松地将 GQLQuery 的日期字段格式化为另一个时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029102/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com