Python の日付 - datetime

Python では基本のデータ型に日付型が含まれていません。

日付を扱いたい時には datetime モジュールをインポートして使います。

ここでは Python の日付、datetime モジュールの基本的な使い方についてご説明します。

Python で日付をフォーマットされた文字列に変換する方法はこちらでご確認ください。 Python で日付をフォーマットされた文字列に変換する

Python で日時を取得する

Python で現在の日時を取得するには datetime モジュールの datetime クラスを使います。

now()today() メソッドで現在のローカルの日時を取得することができます。

二つの違いは、now() のほうは引数にタイムゾーンを渡すことができますが、引数を渡さなければどちらも同じで、ローカルの日時を返します。

utcnow() メソッドを使うと、現在の UTC の日時を取得することができます。

import datetime

print(datetime.datetime.now())
print(datetime.datetime.today())
print(datetime.datetime.utcnow())

実行結果は次のようになります。ロサンゼルスに住んでいるので、ローカル時間は太平洋夏時間 (Pacific Daylight Time)で、utc のほうは + 7 時間されています。

2020-06-20 21:44:01.628979
2020-06-20 21:44:01.629073
2020-06-21 04:44:01.629083

Python で日付のみを取得する

Pyton で日付だけを取得するには datetime モジュールの date クラスの today() メソッドで取得できます。

import datetime

print(datetime.date.today())

実行結果は次のようになります。

2020-06-20

datetime クラスの date() メソッドを使っても日付のみを取得できます。

import datetime

print(datetime.datetime.now().date())

実行結果は先ほどと同じです。

2020-06-20

Python で日付を生成する

Python で日付を生成するには、date や datetime クラスのコンストラクタを使います。

コンストラクタで引数を、それぞれ次のように指定します。

date(year, month, day)

datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

datetime() のコンストラクタの year、month、day 以外は省略可能です。


import datetime

print(datetime.date(2025, 9, 15))
print(datetime.datetime(2025, 9, 15, 14, 35, 22))

実行結果は次のようになります。

2025-09-15
2025-09-15 14:35:22

Python で日付を計算する

Python で日付を計算したい時、例えば二つの日付を引き算をして、その差分の日数を取得したい時は、次のように取得可能です。

import datetime

date1 = datetime.date(2020, 1, 1)
date2 = datetime.date(2020, 9, 30)
diff = date2 - date1
print(diff.days)

実行結果は次のようになります。

273

また、date や datetime オブジェクトに何日か足したり引いたりしたいような時は timedelta() が使えます。

例えば、現在の日付の 5 日前、5 日後の日付は次のように取得できます。

import datetime

d = datetime.date.today()

print(d)
print(d + datetime.timedelta(days=-5))
print(d + datetime.timedelta(days=5))

実行結果は次の通りです。

2020-06-20
2020-06-15
2020-06-25

Python で日付を比較する

Python で二つの日付を比較するには == != < <= > >= などの比較演算子が使えます。

import datetime

date1 = datetime.date(2020, 9, 1)
date2 = datetime.date(2020, 9, 2)

print(date1 == date2)
print(date1 != date2)
print(date1 > date2)
print(date1 <= date2)

実行結果は次のようになります。

False
True
False
True

Python で datetime の日付部分のみ比較する

Python で datetime の日付部分のみ比較したい時に、そのまま比較演算子を使うと時間まで考慮されてしまい、期待した結果にならないことがあります。

日付部分のみを比較したい時は、datetime クラスの date() メソッドを使って、日付の部分のみを取得して比較します。

import datetime

date1 = datetime.datetime(2020, 9, 1, 11, 12, 33)
date2 = datetime.datetime(2020, 9, 1, 23, 2, 12)

print(date1)
print(date2)
print(date1 == date2)
print(date1.date() == date2.date())

実行結果は次のようになります。date() メソッドで date を取得して比較すると、日付部分のみが比較できていますね。

2020-09-01 11:12:33
2020-09-01 23:02:12
False
True

以上、Python の日付、datetime モジュールの基本的な使い方についてご説明しました。

© 2024 やさしい Python 入門