
Pythonのdatetimeモジュールを用いて日時データを取得し、計算する方法をまとめました。
処理にかかる時間の計測やプログラムの一時停止には、timeモジュールの方が便利なので、以下の記事も参照してください。
目次
datetimeモジュール
datetimeモジュールは、日時の取得や計算をするためのモジュールで、特に日付の計算に非常に便利なモジュールです。
モジュールのインポート
datetimeモジュールは組み込みモジュールのため、インストールは不要です。
例:モジュールのインポート
import datetime
日時をdatetime型で取得
datetime型とは
datetime型は年、月、日、時、分、秒、マイクロ秒の値が格納されたオブジェクトで、対応する属性を用いて値を取得することができます。
各属性名と内容を下表に示します。これらは、キーワード引数も兼ねます。
属性名 | 内容 |
---|---|
year | 年 |
month | 月 |
day | 日 |
hour | 時 |
minute | 分 |
second | 秒 |
microsecond | マイクロ秒 |
datetime関数に上表の各属性値を渡すことで、datetimeオブジェクトを生成することができます。年月日は必須の引数となり、入力しない属性は0になります。
例:2019年6月10日を示すdatetimeオブジェクトを生成
import datetime dt = datetime.datetime(2019, 6, 10) print(dt)
出力:2019-06-10 00:00:00
現在の日時をdatetime型で取得
現在の日時をdatetime型で取得するには、datetime.now関数を使用します。datetime.now関数は、コンピュータの時計が示す現在の日時をdatetimeオブジェクトで返します。
例:現在の日時を取得し、年、時、秒を表示
import datetime dt = datetime.datetime.now() print(dt.year) print(dt.hour) print(dt.second)
出力:
2019 23 47
エポック秒からdatetime型に変換
エポック秒をdatetime型に変換するには、datetime.fromtimestamp関数を使用します。
例:現在のエポック秒をdatetime型に変換し、年、時、秒を表示
import time, datetime dt = datetime.datetime.fromtimestamp(time.time()) print(dt.year) print(dt.hour) print(dt.second)
出力:
2019 23 31
datetimeオブジェクトの演算
datetimeオブジェクトは、比較演算子を用いて比較をすることが可能です。
日時の前後を判定するのに便利です。
例:2019年1月1日と2019年6月10日を比較
import datetime dt1 = datetime.datetime(2019, 1, 1) dt2 = datetime.datetime(2019, 6, 10) print(dt1 > dt2) print(dt1 < dt2)
出力:
True False
期間をtimedelta型で取得
timedelta型とは
timedelta型は期間を示すオブジェクトで、deltatime.timedelta関数を用いて生成することができます。
キーワード引数にweeks、days、hours、minutes、seconds、milliseconds、microsecondsをとり、また、属性値としてdays(日数)、seconds(秒数)、microseconds(マイクロ秒数)を持ちます。
例:3日と10時間30分21秒を表すtimedeltaオブジェクトを生成
import datatime td = datetime.timedelta(days=3, hours=10, minutes=30, seconds=21) print(td)
出力:3 days, 10:30:21
さらに、total_secondsメソッドを用いれば、期間を秒数のみで出力することができます。
例:3日と10時間30分21秒の秒数を表示
import datatime td = datetime.timedelta(days=3, hours=10, minutes=30, seconds=21) print(td.total_seconds())
出力:297021.0
timedelta型で日付計算
timedeltaオブジェクトを用いると、日付の計算が非常に簡単に行えます。
datetimeオブジェクトにtimedeltaオブジェクトを加算(減算)することで、datetimeオブジェクトの日時からtimedeltaオブジェクトの期間後(前)の日付を取得できます。
例:現在から500日後の日時を取得
import datetime dt = datetime.datetime.now() td = datetime.timedelta(days=500) print(dt + td)
出力:2020-10-27 00:01:37.470817