0
0

前置き

今日は、Pythonを使って、ユーザーが2つの日付と時間を入力したら、その時間の差は、何日何時間何分何秒差ですと出力されるプログラムコードの作成に着手しました。

1日は、24時間、1440分、86400秒です。
理由:1日=24時間、1時間=60分、1分=60秒
時間を分に変換するにはその値に60を掛けて、
分を秒に変換するにはその値に60を掛けるからです。

プログラムコード

from datetime import datetime

def calculate_datetime_difference(start_datetime_str, end_datetime_str):
    try:
        format_str = "%Y-%m-%d %H:%M:%S"
        # 時間文字列をdatetimeオブジェクトに変換する
        start_datetime = datetime.strptime(start_datetime_str, format_str)
        end_datetime = datetime.strptime(end_datetime_str, format_str)

        # 時間の差を計算する
        difference = end_datetime - start_datetime

        # 差を日、時間、分、秒に変換する
        days = difference.days
        seconds = difference.seconds
        hours = seconds // 3600
        minutes = (seconds % 3600) // 60
        remaining_seconds = seconds % 60

        return days, hours, minutes, remaining_seconds
    except ValueError:
        return None, None, None, None

# 時間を入力として受け取る
start_datetime_str = input("開始日時を「年-月-日 時:分:秒」の形式で入力してください (例: 2024-07-07 13:30:00): ")
end_datetime_str = input("終了日時を同様に入力してください: ")

# 時間の差を計算する
days, hours, minutes, seconds = calculate_datetime_difference(start_datetime_str, end_datetime_str)

# 結果を出力する
if days is not None and hours is not None and minutes is not None and seconds is not None:
    print(f"日時の差は {days}{hours}時間 {minutes}{seconds}秒 です。")
else:
    print("日時の形式が正しくありません。日時を「年-月-日 時:分:秒」の形式で正確に入力してください。")

プログラムコードの説明

このプログラムでは、開始日時と終了日時の差を計算し、日、時間、分、秒に変換して正確な差を表示します。日時の形式が正しくない場合はエラーメッセージを表示します。

出力結果

開始日時を-- ::の形式で入力してください (: 2024-07-07 12:30:00): 2024-07-05 12:37:37
終了日時を同様に入力してください: 2024-07-08 17:17:17
日時の差は 3 4時間 39 40 です
開始日時を-- ::の形式で入力してください (: 2024-07-07 12:30:00): 2024-07-07 19:27:36
終了日時を同様に入力してください: 2024-07-09 10:00:07
日時の差は 1 14時間 32 31 です
開始日時を-- ::の形式で入力してください (: 2024-07-07 12:30:00): 2024-07-06 21:00:00
終了日時を同様に入力してください: 2024-07-11 11:00:00
日時の差は 4 14時間 0 0 です
開始日時を-- ::の形式で入力してください (: 2024-07-07 12:30:00): 2024-07-08 15:20:00
終了日時を同様に入力してください: 2024-08-16 12:30:00
日時の差は 38 21時間 10 0 です
開始日時を-- ::の形式で入力してください (: 2024-07-07 12:30:00): 2024-07-09 14:40:00
終了日時を同様に入力してください: 2024-07-16 16:00:00
日時の差は 7 1時間 20 0 です

出力結果の検証

1つめの出力:2024-07-08 - 2024-07-05 = 3日
17:17:17 - 12:37:37 = 16:77:17 - 12:37:37 = 4:39:40
よって、2つの日時の差は、3日、4時間39分40秒

2つめの出力:2024-07-09 - 2024-07-07 = 2日
10:00:07 - 19:27:36 = 34:00:07 - 19:27:36 = 14:32:31
しかし、2日後は7月9日の19:27:36になるので、差は1日
よって、2つの日時の差は、1日、14時間32分31秒

3つ目の入力:2024-07-11 - 2024-07-06 = 5日
11:00:00 - 21:00:00 = 35:00:00 - 21:00:00 = 14:00:00
同じく、5日後は7月11日の21:00:00になるので、差は4日
よって、2つの日時の差は、4日、14時間0分0秒

4つ目の入力:2024-08-16 - 2024-07-08 = 2024-07-47 - 2024-07-08 = 39
12:30:00 - 15:20:00 = 36:30:00 - 15:20:00 = 21:10:00
同じく、39日後は8月16日の15:20:00になるので、差は38日
よって、2つの日時の差は、38日、21時間10分0秒

5つ目の入力:2024-07-16 - 2024-07-07 = 9日
16:00:00 - 14:40:00 = 15:60:00 - 14:40:00 = 1:20:00
この場合なら、9日後は7月16日の14:40:00で、16:00:00はもう経過しています。
よって、2つの日時の差は、9日、1時間20分0秒

終わりに

皆さんも時間がある時に、このプログラムコードを参考にして、2つの日付と時間の差を計算してみたらいかがでしょうか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0