2012-04-05 1 views
1

[編集]そして、最もエレガントに追加する必要がありますか?私は(しかし、どのように)私はちょうど一回ループをしたいと思いますが、私はちょうど一回ループしたいが、Pythonコードで最初に結果をループすることができますね... [0120時間(ちょうど最近蹴られた)。GQLクエリの日付フィールドを別のタイムゾーンに簡単にフォーマットするにはどうすればいいですか?

私の一番上の直接形式の日付は正しいものの、結果の個々の行の日付はまだUTC(1時間遅れ)です。

ここ

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

I:出力例は、(この場合はdatetime.nowで返されるUTCは、12:42である。)このようになりますテンプレートページですテンプレートコードでも同様に適用できるいくつかの魔法があるかもしれないと考えましたが、datebuilt-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> 

答えて

1

Djangoのテンプレートエンジンで、あなたはドキュメントからTime zone aware output in templates

使用例を使用することができます。

{% load tz %} 

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

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

優秀に見える - 残念ながら、私はそれを試してみましたが、得ましたこれは: 'TemplateSyntaxError: 'tz'は有効なタグライブラリではありません:django.templatetags.tz、tz'という名前のモジュールからテンプレートライブラリを読み込めませんでした。 GAEは... – timlukins

+1

が含まれていない場合は、そのタグのdjangoソースコードを取得し、独自のテンプレートタグに貼り付けることができます(http://4.flowsnake.org/archives/459 – Hoff

+0

ありがとう)。それはうまくいった。 'tz'タグコードを壊す痛みのビット。 – timlukins

関連する問題