Pythonで時間差を計算する方法
公開: 2022-01-23Pythonで日付と時刻を操作する場合、多くの場合、時差を計算する必要があります。 このチュートリアルでは、2つのタイムスタンプの差を時間、分、秒で計算する方法を学習します。
このチュートリアルを終えると、次のことがわかります。
- Pythonの
datetime
モジュールを使用して日付と時刻を操作する方法 timedelta
オブジェクトとは何か、それらがどのように役立つか、そして- 任意の2つのタイムスタンプ間の時間差を時間、分、秒で計算します。
始めましょう。
Pythonのdatetimeモジュールの使用方法
Pythonで日付と時刻を操作するには、 datetime
モジュールを使用します。 datetime
モジュールはPython標準ライブラリの一部です。 したがって、次のように、先に進んですぐに作業環境にインポートできます。
import datetime
時間差を計算するには、2つの異なるタイムスタンプを作成する必要があります。 次のものを作成することを選択できます。
- 2つの
date
オブジェクト、 - 2つの
time
オブジェクト、または date
とtime
の両方の組み合わせ—datetime
オブジェクト。
Pythonで日付オブジェクトを作成する方法
datetimeモジュールからdate
クラスをインポートしてみましょう。 Pythonで日付オブジェクトを作成するには、一般的な構文datetime.date(<year>,<month>,<day>)
を使用できます。 date
オブジェクトdate1
を作成する例を次に示します。
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
GeekflarePythonコンパイラでコードを試してテストできます。 または、Pythonをコンピューターにインストールします。
上記のように、日付を印刷すると、日付はYYYY-MM-DD
形式でフォーマットされます。
注:月は、先行ゼロを含まない整数として指定してください。 日付を書き留めるときに、月に先行ゼロを追加することに慣れている可能性があります。
たとえば、その年の6月である6月の日付を指定するには、06ではなく6を使用します。
たとえば、次のコードスニペットを実行してみてください。月は3
ではなく03
と記載されています。 次のように構文エラーがスローされることがわかります。
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
Pythonでtime
オブジェクトを作成する方法を見てみましょう。
Pythonで時間オブジェクトを作成する方法
時間オブジェクトを作成するには、 time
クラスをインポートしましょう。 次のクラス属性を指定することにより、 time
クラスを使用して任意のPython時間オブジェクトを作成できます: hour
、 minute
、 second
、およびmicrosecond
。
ただし、これらの属性はすべてオプションです。 たとえば、特定の属性を指定しない場合、 second
では0
に設定されます。
次のコードスニペットは、時間オブジェクトtime1
を作成する方法を示しています。 date
オブジェクトと同様に、 time
オブジェクトを印刷して、フォーマットされた時刻を確認できます。
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
Pythonで日時オブジェクトを作成する方法
ご覧のとおり、 date
オブジェクトには時刻に関する情報がありません。 また、 time
オブジェクトには日付に関する情報が含まれていません。
ただし、実際には、日付と時刻の両方の情報が必要になります。 したがって、代わりにdatetime
クラスを使用することをお勧めします。
以下に示すように、Pythonでdatetime
クラスにアクセスし、 datetime
オブジェクトを作成できます。
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
次に、 second
の属性なしで別の日時オブジェクトdt2
を作成しましょう。 デフォルト値である0
に設定されていることがわかります。
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
これまで、Pythonでタイムスタンプを日付、時刻、日時として作成する方法を学びました。 次に、任意の2つのタイムスタンプの差を計算する方法を確認します。
次のセクションに進んで調べてください。
Pythonでtimedeltaオブジェクトを使用する方法
Pythonでは、 timedelta
は時間のスパンを示します。 これは、2つのdate
、 time
、またはdatetime
オブジェクトの違いです。
2つのdate
、 time
、またはdatetime
オブジェクトを加算または減算すると、 timedelta
オブジェクトが取得されます。 このtimedelta
オブジェクトには、時間差の計算に役立つ便利な属性とメソッドがあります。
先に進んで、2つのdatetime
オブジェクトdt1
とdt2
の差を計算してみましょう。
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
上記のコードスニペットから、 tdelta
変数がdt1
とdt2
の間の時間差を保持していることがわかります。 また、Pythonの組み込みtype()
関数を使用して、 timedelta
のタイプがtdelta
クラスであることが確認されます。

次に、別の例をコーディングしましょう。
2つの日付の時差を見つける方法
シンプルでありながら興味深い例を見てみましょう。
問題:現在の日付(今日)とあなたの誕生日の時間差を計算する。
これを行うには、今日を最初のタイムスタンプとして設定し、誕生日を2番目のタイムスタンプとして設定します。
最初のステップとして、2つのdatetime
オブジェクトを作成しましょう。
- 今日の1つ、
today
と呼びましょう、そして - あなたの誕生日のためにもう一つ、それを
bday
と呼びましょう
datetime
クラスには、現在のローカルの日付と時刻を提供するnow()
メソッドがあります。 それでは、 today
取得するそれを使用しましょう—私たちの基準日。
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
以下のコードで、 bday
を誕生日に置き換えて、今年の誕生日の残り時間を計算します。
誕生日が過ぎた後にこれを読んでいる場合は、 bday
を次の誕生日に設定してください。
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
次のステップは、前に説明したように、 timedleta
オブジェクトであるtime_diff
を計算することです。 bday
日からtoday
を引くだけで、時差が生じます。
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416
残りの日数を知るには、次のように、 time_diff
のdays属性を使用します。
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.
秒単位で時差を見つける方法
誕生日が何秒離れているかを計算してみましょう。
合計時間差を秒単位で計算するには、 timedelta
オブジェクトtime_diff
でtotal_seconds()
メソッドを使用します。
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.
まあ、それは長すぎる待ち時間です!
これで、任意の2つのタイムスタンプ間の時間差を秒単位で計算する方法がわかりました。
ここで、いくつかの基本を再検討し、以下を書き留めましょう。 1日は24時間で構成され、1時間は60分で、60秒が1分を構成します。
これは、以下の画像に要約されています。

したがって、秒から分、時間、日に変換するには、次の表を使用して、対応する変換係数で除算します。

次のセクションでは、秒単位の時差を分と時間に変換してみましょう。
分単位で時差を見つける方法
分単位の時差を取得するには、合計秒数を60で割るだけです。
tsecs
を60で割り、次のようにtmins
という変数に格納してみましょう。
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.
時間差を見つける方法
時間差を分単位で計算したので、それを60の係数で割って、時間差を取得できます。 または、合計秒数を60 * 60=3600で割ることもできます。
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.
これで、選択した任意の単位で時間差を計算する方法を学習しました。
結論
このチュートリアルでは、次の方法を学習しました。
- Pythonの
datetime
モジュールを使用して、日付と時刻を作成して操作します。 -
timedelta
オブジェクトを使用して、時間のスパンまたは時間差を取得し、 - 時間差を秒、分、時間で計算します。
このチュートリアルがお役に立てば幸いです。 Pythonでの時差の計算についてすべて理解できたので、次はスキルを練習します。
幸せな学習とコーディング!
ここで、コードと等しいか等しくないかを記述したり、Pythonでヘビゲームを作成したりする方法を学びます。