[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("両方の日付は異なります。")
両方の日付は同じです。

よくある質問

datetimeとdateの違いは何ですか?

datetimeは日付と時刻の両方を表すクラスで、年、月、日、時、分、秒、マイクロ秒を含みます。

一方、dateは日付のみを表すクラスで、年、月、日だけを持ちます。

datetimeは時刻の情報も必要な場合に使用し、dateは日付だけが必要な場合に使用します。

日付の計算でエラーが出る場合の対処法は?

日付の計算でエラーが発生する場合、以下の点を確認してください:

  • 日付の形式が正しいか
  • 日付の範囲が適切か(例:2月30日は存在しない)
  • timedeltaの引数が正しいか(負の値や不適切な型が指定されていないか)

日付のフォーマットがうまくいかない場合の確認ポイント

日付のフォーマットがうまくいかない場合、以下の点を確認してください:

  • 使用しているフォーマット文字列が正しいか
  • 文字列の日付が指定したフォーマットに一致しているか
  • strptime()strftime()の引数が正しく指定されているか

まとめ

この記事では、Pythonのdatetimeモジュールを使用して日付の取得や計算、フォーマット変更、比較方法について解説しました。

日付の操作はプログラミングにおいて非常に重要なスキルであり、正確な日付管理が求められます。

ぜひ、実際のプロジェクトでこれらの知識を活用してみてください。

  • URLをコピーしました!
目次から探す