[Python中級講座] datetimeモジュールの概要

今回はdatetimeモジュールの解説を行います。

datetimeモジュールとは

datetimeモジュールはPythonで日付や時刻を扱う際に必要なデータ型やオブジェクトなどを提供している標準モジュールです。

日時、時刻の取得や足し引きなど計算をすることができます。

クラス、メソッド、属性については以下の記事をご覧ください。

このモジュールはプログラムの先頭でインポートする必要があります。

import datetime

datetimeのクラス(データ型)

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)
resolutiondateオブジェクト間での最小の差(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)]
resolutiontimeオブジェクト間での最小の差

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)]
resolutiondatetimeオブジェクト間での最小の差

datetimeクラスのメソッド

datetimeクラスのインスタンスメソッドクラスメソッドをいくつか紹介します。

インスタンスメソッド意味
date()datetimeオブジェクトの日時情報を持つdateオブジェクトを生成します。
time()
datetimeオブジェクトの時刻情報を持つtimeオブジェクトを生成します。
クラスメソッド意味
now()現在の日付および時刻を返します。

まとめ

今回はdatetimeモジュールの概要を説明しました。

datetimeモジュールの構成がつかめるよう一部メソッドなどを省略しています。

クラスを知っていれば、概要を理解するのはそう難しくないと思いますので、今回、知らない単語が多いと感じた方は以下の記事を参照ください。

[Python中級講座]クラスとは何か | 初めて学ぶプログラミング