Pythonのdatetimeモジュールの使用例
2022/3/18 2022/4/15
Pythonのdatetimeモジュールの使用例をいくつか投稿します。datetimeモジュールは読んで字のごとし、dateとtimeすなわち日付と時間を取り扱うモジュールです。
かなり頻出かなと思っており、私もぜひ使いこなしたいと思っています。
現在時刻と日付を取得する
まずはベーシックな方法です。現在時刻や日付を取得します。
print(datetime.now())
print(date.today())
# Output Result
# 2022-02-22 14:25:10.319475
# 2022-02-22
英語的にかなり分かりやすくnowとtodayです。
過去の時間からの経過時間を計算する
とある日付や時間からとある日付や時間までの経過日数・時間を計算します。例えば、誕生日から何日経ったのだろう、記念日から何日経ったのだろう、イベントの開始まであと何日あるのだろう、といった計算ができます。
print(date.today() - date(2008, 12, 3))
print(datetime.now() - datetime(2022, 1, 1, 0, 0, 0))
# Output Result
# 4829 days, 0:00:00
# 52 days, 23:14:07.577342
上記コードの1つ目は、日付のみ計算してます。2008年12月3日(適当な日付)から本日まで4829日経過しているようです。
2つ目は時間も含めて計算しています。2022年が始まった2022年1月1日0時0分0秒から現在時刻まで、52日23時間14分7秒経過しているようですね。
ISO8601フォーマットで出力する
ISO8601フォーマットで出力する方法です。
print(datetime.now().isoformat())
# Output Result
# 2022-02-22T14:25:10.322242
私は勉強不足でこういった日付時刻表記にISOフォーマットがあると知りませんでした。何事も標準があればそれに従おう、というのが私のモットーなので、特に制約がない限りこのISOフォーマットを使おうと思いました。
日付を文字列に変換する
構築するシステムによって特定のフォーマットで日時を表示させる必要がある時があると思います。その際に有効な方法です。
print(date.today().strftime("%Y年%m月%d日"))
print(datetime.now().strftime("%Y年%m月%d日%H時%M分%S秒"))
# Output Result
# 2022年02月22日
# 2022年02月22日23時24分51秒
文字列型から変換する
上述の文字列型へ変換する逆のパターンです。
print(datetime.strptime("2022年2月22日", "%Y年%m月%d日"))
# Output Result
# 2022-02-22 00:00:00
これも良く使いそうですね。例えば、Webスクレイピングで取ってきたWebサイト上に「8月8日に・・・」のような表記をdatetime型に変換したい時に使えそうです。