Pythonで日付を加算および減算し、時間を比較する | プログラミング学習 初心者向け入門ガイド

ホーム › >>

Pythonで日付を加算および減算し、時間を比較する

記事掲載:https://laptrinhcanban.com/ja

Python で日付を加算および減算し、時刻を比較する方法について説明します。このレッスンの後、Python で日付と時刻を計算する方法と時間を比較する方法を学習します。

Pythonで日付を追加する

datetime または date クラスによって作成されたインスタンスである特定の時間値については、timedelta クラス (クラスは時差を表します) によって作成されたインスタンスにそれらを追加し、以下のようにインスタンスの新しい時間を生成できます。

dt_new = dt + td

そこで:
  • dt は特定の時間値です。クラス date またはクラス datetime によって作成されたインスタンスです。
  • td は特定の日付番号で、timedelta クラスによって作成されたインスタンスです。td の値が負であるか正であるかに応じて、未来に後方または前方に追加できます。
  • dt_new は、計算の結果である新しい時間値です。

これらのクラスの詳細については、What is Datetime in Pythonの記事を参照してください。

具体的には、次の例のように python で日付を加算および減算します。

import datetime

dt2 = datetime.datetime(2020, 7, 21, 6, 12, 30, 551)
print(dt1)
>> 2020-07-21 06:12:30.000551

dt2 = dt1 + datetime.timedelta(days=1)
print(dt2)
>> 2020-07-22 06:12:30.000551

dt3 = dt1g + datetime.timedelta(days=-1)
print(dt3)
>> 2020-07-20 06:12:30.000551

timedelta メソッドの引数の値をdays負または正に指定することで、上記の例のように、過去 1 日を戻したり、将来 1 日を進めたりすることができます。

データが datetime ではなく単なる時間情報の文字列である場合は、Python でのstrptime を使用してデータを datetime に変換し、次の例のように Python で日付を追加します。

import datetime
str1= "21/02/13"
d1 = datetime.datetime.strptime(str1, "%y/%m/%d")

print(d1)
#>> 2021-02-13 00:00:00
print(d1 + datetime.timedelta(days=31))
#>> 2021-03-16 00:00:00
print(d1 + datetime.timedelta(days=-2))
#>> 2021-02-11 00:00:00

Pythonで日付を減算する

Python で日付を減算し、Python で 2 つの時間値の日付差を計算するには、以下のように減算を使用します。

td = dt1 - dt2

そこで:

  • dt1 と dt2 は時間固有の値です。クラス date またはクラス datetime によって作成されたインスタンスです。
  • td は、2 つの時間値 dt1 と dt2 の間の日付の差を表す時間値です。この値は、timedelta

クラスのインスタンスとして扱われ、インスタンスの関連付けられたプロパティを呼び出すことができます。
具体的には、次の例のように python で日付を減算します。

import datetime

dt1 = datetime.datetime(2020, 7, 21, 6, 12, 30, 551)
print(dt1)
#>> 2020-07-21 06:12:30.000551

dt2 = datetime.datetime(2020, 5, 12, 6, 45, 12, 7721)
print(dt2)
#>> 2020-05-12 06:45:12.007721

td= dt1 -dt2
print(td)
#>> 69 days, 23:27:17.992830

print(td.days)
#>> 69

print(td.seconds)
#>> 84437

Python での日付減算の結果は timedelta クラスのインスタンスなので、上記の例のようにこのインスタンスのプロパティを呼び出すことができます。

データが datetime ではなく単なる時間情報の文字列である場合は、 Python でのstrptimeを使用して datetime に変換し、次の例のように Python で日付を減算します。

import datetime

str1= "91/04/15"
str2= "19/08/10"
dt1 = datetime.datetime.strptime(str1, "%y/%m/%d")
dt2 = datetime.datetime.strptime(str2, "%y/%m/%d")

print(dt2-dt1)
#>> 10344 days, 0:00:00

print((dt2-dt1).days/365)
#>> 28.339726027397262

Pythonで時間を比較する

「21/02/13」と「21/06/13」のように Python で時間を表す 2 つの文字列リテラルがあり、それらを比較したいとします。これを行うには、まずpython strptime メソッド を使用して、Python でそれらを datetime に変換する必要があります。
次に、Python で時間減算を実行し、結果の値が負か正かを確認するか、直接比較することができます。

ここで清は、この問題を解決するための 2 つの解決策を次のように示します。

Pythonで時間減算を使用する

import datetime
str1= "21/02/13"
str2= "21/06/13"
dt1 = datetime.datetime.strptime(str1, "%y/%m/%d")
dt2 = datetime.datetime.strptime(str2, "%y/%m/%d")

td_day= (dt1-dt2).days
if td_day > 0:
print(dt1," > ",dt2)
elif td_day < 0:
print(dt1," < ",dt2)
else:
print(dt1, " = ",dt2)

Python での時間減算の結果はインスタンスであるため、その符号を判断できないことに注意してください。代わりに、比較のために strptime.days プロパティを取得する必要があります。

Pythonでの時間の直接比較

import datetime
str1= "21/02/13"
str2= "21/06/13"
d1 = datetime.datetime.strptime(str1, "%y/%m/%d")
d2 = datetime.datetime.strptime(str2, "%y/%m/%d")

if d1 > d2 :
print(d1," > ",d2)
elif d1 < d2:
print(d1," < ",d2)
else:
print(d1, " = ",d2)

上記の両方のソリューションで同じ結果が得られます。

2021-02-13 00:00:00 <  2021-06-13 00:00:00

まとめ

上記 Kiyoshi はpython で日付を加算および減算し、時間を比較する方法について説明しました。レッスンの内容をよりよく理解するために、今日の例を書き直す練習をしてください。

そして、次のレッスンで Python の知識についてさらに学びましょう。

URL Link

https://laptrinhcanban.com/ja/python/nhap-mon-lap-trinh-python/datetime-trong-python/cong-tru-ngay-thang-va-so-sanh-thoi-gian-trong-python/

この記事は役立つと思ったらいいね!とシェアをお願いします
">

ホーム  › >>

Profile
きよしです!笑

Author: Kiyoshi (Chis Thanh)

Kiyoshi was a former international student in Japan. After graduating from Toyama University in 2017, Kiyoshi is currently working as a BrSE in Tokyo, Japan.