今回はdatetimeモジュールの解説を行います。
datetimeモジュールとは
datetimeモジュールはPythonで日付や時刻を扱う際に必要なデータ型やオブジェクトなどを提供している標準モジュールです。
日時、時刻の取得や足し引きなど計算をすることができます。

クラス、メソッド、属性については以下の記事をご覧ください。
このモジュールはプログラムの先頭でインポートする必要があります。
import datetimedatetimeのクラス(データ型)
datetimeモジュールでは複数のクラスが提供されています。
これらのクラスを使い分けることで、「日時」を扱うのか「時刻」を扱うのか、「両方」扱うのか…などを決めることができます。
datetimeモジュールで提供されるクラスは以下の通りです。
| クラス(データ型) | 扱える対象 | 属性 |
| date | 日付 | day, month, year |
| time | 時刻 | hour, minute, second, microsecond, tzinfo |
| datetime | 日付 & 時刻 | day, month, year, hour, minute,second, microsecond, tzinfo |
| timedelta | 日付や時刻の差 | — |
なお、上記以外にもタイムゾーンを扱うtzinfoやtimezoneが存在します。
datetimeとtimeはタイムゾーンを考慮することが可能です。これらは属性としてtzinfoを持ちます。
クラスの表記
モジュールで提供されるクラス(データ型)を使用する場合以下のように表記する必要があります。
モジュール名.クラス名(引数)また、各クラスで定義されるメソッドを使用するには以下のように記述します。
モジュール名.クラス名.メソッド名(引数)dateクラス(型)の概要
以下で属性、メソッド、オブジェクト(インスタンス)の生成方法を確認します。
dateクラスの属性
dateクラスにはインスタンス属性(インスタンス属性)とクラス属性(クラス変数)が存在します。
| インスタンス属性 | 意味 |
| day | 日 (その月の日数) |
| month | 月 (1 ~ 12) |
| year | 年 (1 ~ 9999) |
| クラス属性 | 意味 |
| min | 一番古い日付(0001-01-01) |
| max | 一番新しい日付(9999-12-31) |
| resolution | dateオブジェクト間での最小の差(1日ごと) (1 day, 0:00:00) |
インスタンス属性、クラス属性については以下の記事を参照ください。
dateクラスのメソッド
dateクラスにはインスタンスメソッドとクラスメソッドが存在します。
インスタンスメソッドは一部省略します。
| インスタンスメソッド | 意味 |
| isoformat() | 日付をYYYY-MM-DDの文字列(str)で返します。 |
| ctime() | 日付を(曜日 月 日付 時刻 年)の文字列(str)で返します。 |
| strftime() | 引数に対応した書式で日付の文字列を返します。 |
| replace() | dateオブジェクトのインスタンス属性を変更します。 |
| weekday() | dateオブジェクトの曜日(月~日)を整数(0~6)で返します。 |
| timetuple() | 日付情報をタプル(tuple)で返します。 |
| クラスメソッド | 意味 |
| today() | 現在の日付を返します。 |
| fromtimestamp() | UNIXタイムを返します。 |
| fromordinal() | 1年1月1日からの経過日数を日付に変換します。 |
| fromisofordinal() | 日付の文字列をdateオブジェクトに変換します。(ISO8601対応文字列のみ) |
dateオブジェクトの生成
dateクラスのオブジェクト(dateオブジェクト)の生成方法は以下の通りです。
datetime.date(year,month,day) #引数 (year, month, day,tzinfo)にそれぞれ年、月、日などを入れます。(省略可)
#例
datetime.date(2020,1,2) #2020/1/2のdateオブジェクトtimeクラス(型)の概要
以下で属性、メソッド、オブジェクト(インスタンス)の生成方法を確認します。
timeクラスの属性
timeクラスにもインスタンス属性(インスタンス属性)とクラス属性(クラス変数)が存在します。
| インスタンス属性 | 意味 |
| hour | 時(0 ~ 23) |
| minute | 分 (0 ~ 59) |
| second | 秒 (0 ~ 59) |
| microsecond | マイクロ秒 (0 ~ 999999) |
| tzinfo | タイムゾーン |
| クラス属性 | 意味 |
| min | 一番古いtimeオブジェクト[time(0,0,0,0)] |
| max | 一番新しいtimeオブジェクト[time(23,59,59,999999)] |
| resolution | timeオブジェクト間での最小の差 |
timeクラスのメソッド
dateクラスにはインスタンスメソッドとクラスメソッドが存在します。
インスタンスメソッドは一部省略します。
| インスタンスメソッド | 意味 |
| isoformat() | 時刻をISO8601の書式に従う文字列(str)で返します。 |
| strftime() | 引数に対応した書式で時刻の文字列を返します。 |
| replace() | timeオブジェクトのインスタンス属性を変更します。 |
| timetuple() | 日付情報をタプル(tuple)で返します。 |
| クラスメソッド | 意味 |
| fromisoformat() | 時刻の文字列をdateオブジェクトに変換します。(ISO8601対応文字列のみ) |
timeオブジェクトの生成
timeクラスのオブジェクト(timeオブジェクト)の生成方法は以下の通りです。
datetime.time(hour, minute, seond microsecond,tzinfo)
datetime.time(3, 10, 12,1111)#3時10分12.001111秒のtimeオブジェクトdatetimeクラス(型)の概要
datetimeクラスはdateクラスとtimeクラスを一つにまとめたものです。
以下でdatetimeクラスの属性、メソッド、オブジェクト(インスタンス)の生成方法を確認します。
datetimeクラスの属性
datetimeクラスにもインスタンス属性(インスタンス属性)とクラス属性(クラス変数)が存在します。
| インスタンス属性 | 意味 |
| hour | 時(0 ~ 23) |
| minute | 分 (0 ~ 59) |
| second | 秒 (0 ~ 59) |
| microsecond | マイクロ秒 (0 ~ 999999) |
| tzinfo | タイムゾーン |
| day | 日 (その月の日数) |
| month | 月 (1 ~ 12) |
| year | 年 (1 ~ 9999) |
| tzinfo | タイムゾーン |
| クラス属性 | 意味 |
| min | 一番古いtimeオブジェクト[time(0,0,0,0)] |
| max | 一番新しいtimeオブジェクト[time(23,59,59,999999)] |
| resolution | datetimeオブジェクト間での最小の差 |
datetimeクラスのメソッド
datetimeクラスのインスタンスメソッドとクラスメソッドをいくつか紹介します。
| インスタンスメソッド | 意味 |
| date() | datetimeオブジェクトの日時情報を持つdateオブジェクトを生成します。 |
| time() | datetimeオブジェクトの時刻情報を持つtimeオブジェクトを生成します。 |
| クラスメソッド | 意味 |
| now() | 現在の日付および時刻を返します。 |
まとめ
今回はdatetimeモジュールの概要を説明しました。
datetimeモジュールの構成がつかめるよう一部メソッドなどを省略しています。
クラスを知っていれば、概要を理解するのはそう難しくないと思いますので、今回、知らない単語が多いと感じた方は以下の記事を参照ください。

