2016/07/14

plone.app.event tzinfo

如果你使用新版 Plone 5.x 或 Plone 4.3.x 加上 plone.app.contenttypes 昇級,應該就會遇到 plone.app.event 帶來的 tzinfo 時區衝擊。假設 item = app.mysite.events['20160701'] 那我們可以用 item.creation_date 讀取建立時間,類似 DateTime('2016/07/01 00:30:23.674693 UTC') 這樣的格式,這表示它還是使用傳統的時間格式,試 item.start 和 item.end 的話,會發現類似 datetime.datetime(2016, 3, 23, 16, 0, tzinfo=) 的格式。

文件 Zope DateTime 有基本的說明,可惜並沒有幫到忙,我想要把上述時間轉成 GMT+8 的格式,這會影響到「三月23日」和「三月24日」的差別。找到 Converting Time Zones for datetime Ojbects 讓事情有了進展:

fmt = "%Y-%m-%d"
item.start.strftime(fmt)

from pytz import timezone
item.start.astimezone(timezone('Asia/Taipei')
datetime.datetime(2016, 3, 24, 0, 0, tzinfo=<DstTzInfo 'Asia/Taipei' CST+8:00:00 STD>)