madokaのブログ

勉強したことのoutput先として使ってます。内容はpythonがらみが多いかもです。

AWS Lambdaで時刻を扱う

Lambdaにてdatetime.now()を用いて、現在時刻との時間比較を行うApplicationを作っていたところ、どうも時間比較が想定と違う動きをしているぞと悩んでました。ふとLambdaのTimeZoneが違うのでは!と頭をよぎったので調べてみました。

LambdaのTimeZoneは、、

LambdaのTimeZoneはどうやらUTCのようです。比較対象の時刻はJSTだったので、それはうまくいかないわけです。

LambdaでのTimeZone確認

LambdaのTimeZone確認に使用したコードです。

from datetime import datetime 
import os
def lambda_handler(event, context):
    return {
        'time_zone': os.environ["TZ"],
        'now':datetime.now().strftime("%Y%m%d%H%M")
    }

出力

{
  "time_zone": ":UTC",
  "now": "201902181443"
}

TimeZoneを変更する

環境変数に TZ : Asia/Tokyoと追加しました。 環境変数の入力欄 その後先ほどのコードを動かしてみたところ、、、

{
  "time_zone": "Asia/Tokyo",
  "now": "201902182343"
}

時刻表示が東京基準になりました。めでたし!