Pythonで時間差を計算する方法

公開: 2022-01-23

Pythonで日付と時刻を操作する場合、多くの場合、時差を計算する必要があります。 このチュートリアルでは、2つのタイムスタンプの差を時間、分、秒で計算する方法を学習します。

このチュートリアルを終えると、次のことがわかります。

  • Pythonのdatetimeモジュールを使用して日付と時刻を操作する方法
  • timedeltaオブジェクトとは何か、それらがどのように役立つか、そして
  • 任意の2つのタイムスタンプ間の時間差を時間、分、秒で計算します。

始めましょう。

Pythonのdatetimeモジュールの使用方法

Pythonで日付と時刻を操作するには、 datetimeモジュールを使用します。 datetimeモジュールはPython標準ライブラリの一部です。 したがって、次のように、先に進んですぐに作業環境にインポートできます。

 import datetime

時間差を計算するには、2つの異なるタイムスタンプを作成する必要があります。 次のものを作成することを選択できます。

  • 2つのdateオブジェクト、
  • 2つのtimeオブジェクト、または
  • datetimeの両方の組み合わせ— 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時間オブジェクトを作成できます: hourminutesecond 、および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つのdatetime 、またはdatetimeオブジェクトの違いです。

2つのdatetime 、またはdatetimeオブジェクトを加算または減算すると、 timedeltaオブジェクトが取得されます。 このtimedeltaオブジェクトには、時間差の計算に役立つ便利な属性とメソッドがあります。

先に進んで、2つのdatetimeオブジェクトdt1dt2の差を計算してみましょう。

 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変数がdt1dt2の間の時間差を保持していることがわかります。 また、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_difftotal_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でヘビゲームを作成したりする方法を学びます。