PythonとAWS Lambdaを使用して日時を扱う方法について説明します。特に、Lambdaの実行環境がUTCであるため、日本時間を扱いたい場合の対処法について詳しく見ていきましょう。
datetimeモジュールの基本
Pythonのdatetime
モジュールは日付と時刻を扱うためのものです。以下のようにdatetime
オブジェクトを作成し、現在の日時を取得することができます。
from datetime import datetime
now = datetime.now()
print("Date/Time: ", now)
Lambdaでの日時取得
AWS Lambdaでは、実行環境がUTCなので、日本時間を取得したい場合は注意が必要です。具体的には、timezone
オブジェクト(tzinfo
のサブクラス)を使用して日本時間を設定します。
しかし、datetime.today()
メソッドは引数を取らないため、以下のようなコードはエラーになります。
from datetime import datetime, timezone, timedelta
TZ_JST = timezone(timedelta(hours=+9))
processingDate = datetime.today(TZ_JST) # TypeError: datetime.today() takes no arguments (1 given)
そこで、timedelta
オブジェクトを使用して、取得した日時に9時間を加えることで日本時間を取得することができます。
from datetime import datetime, timedelta
processingDate = datetime.today() + timedelta(hours=9)
print(processingDate)
このように、PythonとLambdaを使用して日時を扱う際は、実行環境のタイムゾーンとdatetime
モジュールの使い方を理解することが重要です。