根據這篇 "Python - Timezones" 說明, 我在 main.py 中加上 :
os.environ['TZ']='Asia/Taipei'
time.tzset()
subject=str(today) + " 盤後分析報告"
時區是設定進去了沒錯 (輸出 os.environ['TZ'] 有顯示 'Asia/Taipei'), 但是時間還是一樣 UTC. Why? 原因在 GAE 的這篇 "類型和 Property 類別" 有說明 :
"部分程式庫使用
TZ
環境變數來控制套用至日期時間值的時區。「應用服務引擎」將此環境變數設定為 "UTC"
。 請注意,在應用程式中變更此值,不會變更某些日期時間函式的行為,因為在 Python 程式碼以外的範圍,看不到環境變數的變更。"
也就是說, 這一招在 GAE 沒有作用.
最後在 JiunJuin 君這篇 "[GAE] 時區設定 Asia/Taipei" Brian 的 "在 GAE 使用台灣時區", 與 memo 君的 "GAE 時區" 找到解法了, 原來如此, 呵呵.
from datetime import timedelta, datetime
taipei_time=datetime.now() + timedelta(hours=+8)
taipei_time=taipei_time.strftime('%F %T')
subject=taipei_time + " 盤後分析報告"
subject=taipei_time + " 盤後分析報告"
這樣郵件主旨就正確顯示 "2013-07-07 15:15:00 盤後分析報告" 啦. 這裏使用了 datetime 模組的 strftime() 方法, %F 表示以 YYYY-MM-DD 顯示日期, 而 %T 則以 HH:mm:SS 顯示時間, 中間用一空格隔開. 呵呵, 我的 Python 太弱了, 要找時間把常用的模組好好測試一番.
參考 :
Time zones in Google App Engine
Time access and conversions
沒有留言 :
張貼留言