\

PythonとAWS Lambdaを使用して現在時刻を取得する方法について説明します。この記事は、PythonのdatetimeモジュールとAWS Lambdaの特性を理解することを目指しています。

AWS Lambdaと現在時刻

AWS Lambdaでは、デフォルトのタイムゾーンがUTCです。したがって、日本時間を取得するためには、タイムゾーンを明示的に設定する必要があります。

Pythonのdatetimeモジュールを使用して現在時刻を取得する基本的なコードは次のとおりです。

from datetime import datetime
now = datetime.now()
print(now)

しかし、このコードをAWS Lambdaで実行すると、UTC時間(日本時間から-9時間された値)が取得されます。

タイムゾーンの設定

日本時間を取得するためには、タイムゾーンを設定する必要があります。Pythonのdatetimeモジュールには、タイムゾーン情報を扱うためのtimezonetimedeltaという2つのクラスがあります。

以下のコードは、日本時間を設定する例です。

from datetime import datetime, timezone, timedelta

# 日本時間を設定
TZ_JST = timezone(timedelta(hours=+9))

# datetime.nowの引数にtzinfoを渡す
now = datetime.now(TZ_JST)

print(now)

しかし、datetime.now()メソッドはタイムゾーン情報を引数として受け取ることはできません。そのため、上記のコードはエラーになります。

正しい現在時刻の取得方法

正しい現在時刻の取得方法は、datetime.now()を使用してUTC時間を取得し、その後でtimedeltaを使用して9時間を加算することです。

以下のコードは、その例です。

from datetime import datetime, timedelta

# UTC時間を取得
now = datetime.now()

# 9時間を加算
now_jst = now + timedelta(hours=9)

print(now_jst)

この方法であれば、AWS Lambdaでも正確に日本時間を取得することができます。

まとめ

AWS LambdaとPythonを使用して現在時刻を取得する際には、タイムゾーンの設定に注意が必要です。特に、AWS LambdaではデフォルトのタイムゾーンがUTCであるため、日本時間を取得するためにはタイムゾーンを明示的に設定する必要があります。また、datetime.now()メソッドはタイムゾーン情報を引数として受け取ることはできないため、UTC時間を取得した後でtimedeltaを使用して時間を加算する方法を使用します。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です