【Python入門】datetimeモジュールで日付・時間を扱う方法について解説

Pythonで日時情報を扱う場合、標準ライブラリであるdatetimeモジュールを使用します。

datetime内のクラスや関数を活用すれば、現在時刻を取得したり、文字列を日時操作できる形へ変換することが可能です。

この記事では、datetimeモジュールで日付や時刻を扱う方法について解説していきます。

目次

datetimeモジュールの使い方

datetimeモジュールでは、主に以下の4つの操作を行うことができます。

  • 指定した日時情報を作成する
  • 現在の日時を取得する
  • 日時で演算・比較を行う
  • 日時⇔文字列に変換する

指定した日時情報を作成する

datetimeモジュールでは、日時情報を扱う際のデータ型として以下が用意されています。

スクロールできます
内容作成方法
datetime日付・時刻の情報を保持datetime(, , , , , )
date日付の情報を保持date(, , , , , )
time時刻の情報を保持time(, , , ミリ秒)
timedelta日付や時刻の差分を保持
(主に演算で使用)
timedelta(種別=数値)
種別はdayssecondsなどの単位を指定

作成したい日時データの種類に応じて、様々な形で値を作成することが可能です。

またdatetimeモジュールを使用する際は、内部のクラス・関数を呼び出す前にimport文にて読み込みを行う必要があります。

import datetime as dt  # 「datetime」モジュールを「dt」として読み込む

print(dt.datetime(2022, 2, 1, 8, 0, 0))  # datetime型(dtモジュール)で作成した値を表示
print(dt.date(2022, 2, 1))  # date型(dtモジュール)で作成した値を表示
print(dt.time(8, 0, 0))  # time型(dtモジュール)で作成した値を表示
print(dt.timedelta(days=3))  # timedelta型(dtモジュール)で作成した値を表示

= 実行結果 =

2022-02-01 08:00:00
2022-02-01
08:00:00
3 days, 0:00:00

現在の日時を取得する

現在の日時情報を取得する場合は、以下のメソッドを利用します。

メソッド…特定の値や変数に対して処理を行い、その結果を返す仕組みのこと

メソッド対応しているデータ型内容
now()・datetime型現在の日付・時刻情報を取得
today()・datetime型
・date型
現在の日付情報を取得

now()メソッドより時刻のみを取得したい場合は、さらにtime()メソッドにて変換を行う必要があります。

import datetime as dt  # 「datetime」モジュールを「dt」として読み込む

print(dt.datetime.now())  # datetime型にて現在日付・時刻を取得して表示
print(dt.date.today())  # date型にて現在の日付を取得して表示
print(dt.datetime.now().time())  # now()メソッドの結果に対して、時刻を取得して表示

= 実行結果 =

2022-02-08 20:10:37.684202
2022-02-08

日時で演算・比較を行う

datetimeモジュールで作成した日時データを使って、計算を行うことも可能です。

演算結果
同じデータ型での引き算timedelta型datetime型 datetime型 = timedelta型
timedelta型による足し算元データ型date型 + timedelta型 = date型
timedelta型による引き算元データ型time型timedelta型 = time型
同じデータ型での比較bool型datetime型 < datetime型 = bool型

同じデータ型での引き算なら双方の差分が、timedelta型(差分)を用いた演算であれば結果となる日時データが返されます。

また、日時データ同士を比較した場合は、記述式が合っているかどうかをTrueまたはFalseで確認できます。

import datetime as dt  # 「datetime」モジュールを「dt」として読み込む

dt_a = dt.date(2022, 2, 1)  # dt_aという変数にて、日付データを保持
dt_b = dt.date(2022, 2, 7)  # dt_bという変数にて、日付データを保持
td = dt.timedelta(days=3)  # tdという変数にて、差分データを保持

print(dt_b - dt_a)  # date型同士の引き算の結果を表示
print(dt_a + td)  # timedelta型による足し算の結果を表示
print(dt_b + td)  # timedelta型による引き算の結果を表示
print(dt_a > dt_b)  # dt_aとdt_bの比較結果が正しいかどうかを表示

= 実行結果 =

6 days, 0:00:00
2022-02-04
2022-02-10
False

日時⇔文字列に変換する

datetimeモジュールでは、作成した日付情報をstr型(文字列)に変換したり、あるいはその逆に関しても対応可能です。

メソッド内容変換方法
strftime()各データ型⇒文字列に変換日時情報.strftime(日時フォーマット)
strptime()文字列⇒datetime型に変換datetime.strftime(文字列, 日時フォーマット)

strftime()の場合はどのような形式の文字列に変換するかstrptime()の場合は変換対象となる文字列がどのような形式になっているかを「日時フォーマット」として括弧()内に記述します。

変換する際は、指定したフォーマットをもとにそれぞれ適切な型へ書き換える形になります。

import datetime as dt  # 「datetime」モジュールを「dt」として読み込む

dt_today = dt.date(2022, 2, 1)  # dt_todayという変数にて、date型の日時情報を保持
word = "18/05/19 18時59分59秒"  # wordという変数にて、文字列を保持

print(dt_today.strftime("%Y年%m月%d日"))  # dtを文字列に変換して表示
print(dt.datetime.strptime(word, "%y/%m/%d %H時%M分%S秒"))  # wordをdatetime型に変換して表示

= 実行結果 =

2022年02月01日
2018-05-19 18:59:59

まとめ

この記事では、datetimeモジュールで日付や時刻を扱う方法について解説しました。

データ型に応じて、使えるメソッドや演算方法が異なっていたりと、プログラミング初心者にとっては少し複雑に感じてしまうかもしれません。

Pythonを扱う上では出番の多いモジュールになりますので、少しずつ使い慣れていくようにしましょう。

シェアはこちらから
目次