1

[編集]そして、私は、最もエレガントに追加する必要がありますか?私は(方法はわかりませんが)最初にPythonコードの結果をループして、そこで各日付をフォーマットすることができると思いますが、ループするのは1回だけです... [\ Edit]

私の場合、British Summer Time(最近始まったばかりです)。

現時点では、直接フォーマットされた最上位の日付は正しいですが、結果の個々の行の日付はまだUTC(1時間遅れ)です。出力例は、次のようなテンプレートページです(datetime.nowこの場合に返されるUTCは12:42です)。

今の時間:2012年4月5日13:42

2012-04-0513:10:00イベント234

2012-04-0513:10:00イベント235

2012-04-0513: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 組み込みでは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>
4

1 に答える 1

1

djangoのテンプレートエンジンを使用すると、テンプレートでタイムゾーン対応の出力を使用できます

ドキュメントからの使用例:

{% load tz %}

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

{% timezone None %}
    Server time: {{ value }}
{% endtimezone %}
于 2012-04-05T13:40:01.340 に答える