[Python] datetimeで日付だけ取得・計算する方法を解説
Pythonのdatetime
モジュールは、日付と時間を操作するための強力なツールです。
日付だけを取得するには、datetime.date()
を使用します。
例えば、現在の日付を取得するにはdatetime.date.today()
を使用します。
日付の計算にはtimedelta
を使用します。
例えば、1日後の日付を計算するにはdatetime.date.today() + datetime.timedelta(days=1)
とします。
これにより、日付の加減算が簡単に行えます。
- 現在の日付や特定の日付の取得方法
- 日付の加算や減算の方法
- 日付の差分を計算する方法
- 日付のフォーマットを変更する方法
- 日付の大小や等価の比較方法
日付の取得方法
現在の日付を取得する
date.today()の使い方
date.today()
を使用すると、現在の日付を取得できます。
このメソッドは、datetime
モジュールのdateクラス
に属しています。
from datetime import date
# 現在の日付を取得
today = date.today()
print(today)
2023-10-01
datetime.now()の使い方
datetime.now()
を使用すると、現在の日付と時刻を取得できます。
このメソッドは、datetime
モジュールのdatetimeクラス
に属しています。
from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
print(now)
2023-10-01 12:34:56.789123
特定の日付を取得する
datetime.date()の使い方
datetime.date()
を使用すると、特定の日付を指定して取得できます。
年、月、日を引数として渡します。
from datetime import datetime
# 特定の日付を取得
specific_date = datetime(2023, 10, 1).date()
print(specific_date)
2023-10-01
datetime.strptime()の使い方
datetime.strptime()
を使用すると、文字列から日付を取得できます。
フォーマットを指定する必要があります。
from datetime import datetime
# 文字列から日付を取得
date_string = "2023-10-01"
date_format = "%Y-%m-%d"
parsed_date = datetime.strptime(date_string, date_format).date()
print(parsed_date)
2023-10-01
日付の計算方法
日付の加算・減算
timedeltaを使った日付の加算
timedelta
を使用すると、日付に対して日数を加算することができます。
timedelta
は、日数、秒数、マイクロ秒数などを指定して時間の差を表現します。
from datetime import datetime, timedelta
# 現在の日付を取得
today = datetime.now()
# 10日加算
future_date = today + timedelta(days=10)
print(f"現在の日付: {today}")
print(f"10日後の日付: {future_date}")
現在の日付: 2023-10-01 12:34:56.789123
10日後の日付: 2023-10-11 12:34:56.789123
timedeltaを使った日付の減算
timedelta
を使用して、日付から日数を減算することもできます。
from datetime import datetime, timedelta
# 現在の日付を取得
today = datetime.now()
# 5日減算
past_date = today - timedelta(days=5)
print(f"現在の日付: {today}")
print(f"5日前の日付: {past_date}")
現在の日付: 2023-10-01 12:34:56.789123
5日前の日付: 2023-09-26 12:34:56.789123
日付の差分を計算する
日付の差分を求める方法
2つの日付の差分を求めるには、単純に引き算を行います。
結果はtimedelta
オブジェクトとして得られます。
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2023, 10, 1)
date2 = datetime(2023, 9, 26)
# 差分を計算
difference = date1 - date2
print(f"日付の差分: {difference}")
日付の差分: 5 days, 0:00:00
日付の差分を日数で表示する
差分を日数で表示するには、days
属性を使用します。
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2023, 10, 1)
date2 = datetime(2023, 9, 26)
# 差分を計算
difference = date1 - date2
print(f"日数での差分: {difference.days}日")
日数での差分: 5日
応用例
日付のフォーマット変更
strftime()を使ったフォーマット変更
strftime()メソッド
を使用すると、datetime
オブジェクトを指定したフォーマットの文字列に変換できます。
フォーマットは、様々なプレースホルダーを使用して指定します。
from datetime import datetime
# 現在の日付を取得
now = datetime.now()
# フォーマットを指定して日付を文字列に変換
formatted_date = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(formatted_date)
2023年10月01日 12時34分56秒
strptime()を使った文字列から日付への変換
strptime()メソッド
を使用すると、指定したフォーマットの文字列をdatetime
オブジェクトに変換できます。
from datetime import datetime
# 文字列から日付を取得
date_string = "2023年10月01日 12時34分56秒"
date_format = "%Y年%m月%d日 %H時%M分%S秒"
parsed_date = datetime.strptime(date_string, date_format)
print(parsed_date)
2023-10-01 12:34:56
日付の比較
日付の大小比較
日付の大小比較は、通常の数値と同様に行えます。
>
、<
、>=
、<=
などの演算子を使用します。
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2023, 10, 1)
date2 = datetime(2023, 9, 26)
# 大小比較
if date1 > date2:
print(f"{date1} は {date2} よりも後の日付です。")
else:
print(f"{date1} は {date2} よりも前の日付です。")
2023-10-01 00:00:00 は 2023-09-26 00:00:00 よりも後の日付です。
日付の等価比較
日付の等価比較は、==
演算子を使用して行います。
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2023, 10, 1)
date2 = datetime(2023, 10, 1)
# 等価比較
if date1 == date2:
print("両方の日付は同じです。")
else:
print("両方の日付は異なります。")
両方の日付は同じです。
よくある質問
まとめ
この記事では、Pythonのdatetime
モジュールを使用して日付の取得や計算、フォーマット変更、比較方法について解説しました。
日付の操作はプログラミングにおいて非常に重要なスキルであり、正確な日付管理が求められます。
ぜひ、実際のプロジェクトでこれらの知識を活用してみてください。