前置き
今日は、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つの日付と時間の差を計算してみたらいかがでしょうか。