Pythonのdatetimeモジュールの使用例

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型に変換したい時に使えそうです。

めっさん
  • めっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後日系企業でグローバル案件に携わる。大小様々な企業を転々としながら、マレーシアやアメリカへの赴任経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。年齢は秘密だけど定年も間近かな。

コメントする

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