日付したい(pendulum
)
1$ pip3 install pendulum
Pendulumはデフォルトでタイムゾーンを考慮する日付管理パッケージです。
Python標準にはdatetime
、date
、time
などのモジュールがありますが、どれを使ったらよいかいつも悩みます。
Pendulumはそんな悩みから解放してくれるのでオススメです。
現在時刻を取得したい
1import pendulum
2now = pendulum.now()
3# => DateTime(2022, 10, 24, 12, 51, 43, 38054, tzinfo=Timezone('Asia/Tokyo'))
一般的な日付フォーマットを取得したい
1pendulum.parse("2022-09-26T17:00:00")
2# => DateTime(2022, 9, 26, 17, 0, 0, tzinfo=Timezone('UTC'))
1pendulum.parse("2022-09-26T17:00:00", tz="Asia/Tokyo")
2# => DateTime(2022, 9, 26, 17, 0, 0, tzinfo=Timezone('Asia/Tokyo'))
独自の日付フォーマットを取得したい
1pendulum.from_format("26/Sep/2022:06:05:11 +0000", "DD/MMM/YYYY:HH:mm:ss ZZ")
2# => DateTime(2022, 9, 26, 6, 5, 11, tzinfo=Timezone('+00:00'))
1pendulum.from_format("26/Sep/2022:06:05:11 +0900", "DD/MMM/YYYY:HH:mm:ss ZZ")
2# => DateTime(2022, 9, 26, 6, 5, 11, tzinfo=Timezone('+09:00'))
ここで使ったサンプルはApacheのログに記録されている日付フォーマットです。
parse
ではエラーがでるのでfrom_format
で形式を指定する必要があります。
利用できる日付トークンはTokensを参照してください。
日付フォーマットをISO標準に変換したい
1dt = pendulum.parse("2022-09-26T17:00:00")
2dt.isoformat()
3# => '2022-09-26T17:00:00+00:00'
1dt = pendulum.from_format("26/Sep/2022:06:05:11 +0900", "DD/MMM/YYYY:HH:mm:ss ZZ")
2dt.to_iso8601_string()
3# => '2022-09-26T06:05:11+09:00'
parse
またはfrom_format
で読み込んだ日付を、ISO標準形式で出力したい場合は多いです。
to_isoformat()
もto_iso8601_string
も出力結果は同じです。
その他の出力可能な形式はCommon Formatsを参照してください。
ひと月後の日付が欲しい
1dt = pendulum.date(2018, 12, 1)
2dt.add(months=1)
3# => Date(2019, 1, 1)
日付の足し算や引き算もできます。 その際、年の繰り越しもきちんと扱ってくれます。