Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで日付と時刻を比較する方法|datetimeモジュールの基本

日付や時刻の比較は、あらゆるプログラミング言語において非常に重要な処理の一つです。Pythonにはdatetimeライブラリが標準で用意されており、日付や時刻を扱うための便利な組み込み関数が多数提供されています。さらに、日付や時刻のオブジェクトは数値と同じように比較演算子を使って直感的に比較できる点も大きな魅力です。

比較に使える演算子

Pythonの日付・日時オブジェクトでは、以下の比較演算子がそのまま利用できます。

  • > :大きい(より未来の日付)
  • < :小さい(より過去の日付)
  • == :等しい
  • >=<=!= も同様に使用可能

サンプルコード

以下の例では、date関数に年・月・日の値を渡して2つの日付オブジェクトを作成し、if文による条件分岐で日付を比較しています。また、datetime関数を使えば、時刻まで含めた詳細な比較も可能です。

import datetime
# デフォルトの日付形式を取得
print("Today is: ",datetime.date.today())
date1 = datetime.date(2019, 7, 2)
date2 = datetime.date(2019, 6, 5)

# 日付を比較
if (date1 > date2):
    print("Date1 > Date2")
elif (date1 < date2):
    print("Date1 < Date2")
else:
    print("Dates are equal")

# デフォルトの日時形式を取得
print(datetime.datetime.now())
date_time1 = datetime.datetime(2019, 7, 2,23,15,9)
date_time2 = datetime.datetime(2019, 7, 2,23,15,9)

# 日時を比較
print(date_time2)
if (date_time1 == date_time2):
    print("Date Time 1 is equal to Date Time 2")
else:
    print("Date times are unequal")

実行結果

上記のコードを実行すると、次のような結果が出力されます。

Today is: 2019-08-01
Date1 > Date2
2019-08-01 16:34:01.061242
2019-07-02 23:15:09
Date Time 1 is equal to Date Time 2

ポイント解説

このように、datetimeモジュールのdateオブジェクトやdatetimeオブジェクトは、通常の数値と同じ感覚で比較できます。日付のみを扱う場合はdate()、時刻情報も含めて扱いたい場合はdatetime()を使用しましょう。タスク管理アプリの期限チェックやログ解析など、実務でも幅広く活用できる基本的かつ重要なテクニックです。

  1. Pythonで日付から1日を引く方法【timedeltaの使い方】

    Pythonで日付から1日を引く(前日の日付を取得する)には、datetimeモジュールに含まれるtimedeltaオブジェクトを使用します。手順はシンプルで、まず引きたい時間の長さを指定してtimedeltaオブジェクトを作成し、それを現在の日付から減算するだけです。サンプルコードfrom datetime import datetime from datetime import timedelta today = datetime.today() yesterday = today - timedelta(days=1) print(today) print() print(yesterd

  2. Pythonで文字列から日付を抽出・解析する方法

    文字列から日付を抽出するには、まずその文字列内で日付がどのような形式(フォーマット)で表現されているかを把握しておく必要があります。基本的なアプローチとしては、正規表現(reモジュール)で日付部分を取り出し、datetime.datetime.strptime() で解析(パース)するという流れになります。例えば、文字列中に「YYYY-MM-DD」形式の日付が含まれている場合、以下のコードで抽出と解析ができます。コード例import re import datetime s = I have a meeting on 2018-12-10 in New York match = re.sea