1. はじめに
Pythonで時間を扱う際、「秒単位の時間」と「HH:MM:SS」形式を相互に変換する方法を知っておくと非常に便利です。秒単位で管理されている処理時間を見やすい形式に変換したり、逆にユーザーが入力した「HH:MM:SS」形式を秒に変換して数値的に処理することができます。
本記事では、Python初心者〜中級者を対象に、秒→HH:MM:SS、HH:MM:SS→秒の両方向の変換方法を丁寧に解説します。実務やプログラミング学習の中で、ログ処理やデータ加工、時間集計などに応用できます。
2. 秒と「HH:MM:SS」形式を相互に変換する方法
2-1. 秒数を「HH:MM:SS」形式に変換する
Pythonのdatetime.timedelta
を使うと、秒数を時間形式(HH:MM:SS)に簡単に変換できます。
import datetime
# 秒を定義
seconds = 3665
# timedeltaで時間形式に変換
time_str = str(datetime.timedelta(seconds=seconds))
print(time_str)
実行結果:
1:01:05
この例では、3665秒が「1時間1分5秒」に変換されています。
2-2. 「HH:MM:SS」形式を秒に変換する
逆に、HH:MM:SS
形式の文字列から、秒数に変換するには、split()
関数やmap()
関数を用います。
time_str = "2:15:30" # 2時間15分30秒
# 時・分・秒に分解して整数化
h, m, s = map(int, time_str.split(":"))
# 秒に換算
total_seconds = h * 3600 + m * 60 + s
print(total_seconds)
実行結果:
8130
このように、文字列形式から数値(秒)へと変換するのも簡単です。
3. よくある使い方・応用例
3-1. 処理時間の計測と表示
処理時間を計測して、見やすい形式で表示したいときに便利です。
import time
import datetime
start = time.time()
# 処理対象(例:スリープ3秒)
time.sleep(3)
end = time.time()
elapsed_seconds = int(end - start)
formatted_time = str(datetime.timedelta(seconds=elapsed_seconds))
print(f"処理時間:{formatted_time}")
実行結果:
処理時間:0:00:03
3-2. ユーザー入力の時間を秒で保持してデータベースに保存
ユーザーが「01:30:00」のような時間を入力した場合、これを秒に変換して保存し、再度取り出すときに表示用に「HH:MM:SS」に戻す、という処理はWebアプリなどでよく使われます。
# 入力時間を秒に変換
def hhmmss_to_seconds(hhmmss):
h, m, s = map(int, hhmmss.split(":"))
return h * 3600 + m * 60 + s
# 秒からHH:MM:SSに変換
def seconds_to_hhmmss(seconds):
return str(datetime.timedelta(seconds=seconds))
# 実行例
input_time = "01:30:00"
seconds = hhmmss_to_seconds(input_time)
print(f"{input_time} は {seconds} 秒")
formatted = seconds_to_hhmmss(seconds)
print(f"{seconds} 秒 は {formatted}")
実行結果:
01:30:00 は 5400 秒
5400 秒 は 1:30:00
4. 注意点・エラー対策
4-1. 不正な形式に注意
「HH:MM:SS」の形式でない文字列をsplit(":")
で処理すると、ValueError
が発生します。以下のように例外処理を入れて安全に扱いましょう。
def safe_hhmmss_to_seconds(hhmmss):
try:
h, m, s = map(int, hhmmss.split(":"))
return h * 3600 + m * 60 + s
except ValueError:
print("形式エラー:正しいHH:MM:SS形式で入力してください")
return None
# 実行例
safe_hhmmss_to_seconds("12:34") # エラーになる
実行結果:
形式エラー:正しいHH:MM:SS形式で入力してください
4-2. タイムゾーンや日時との混同に注意
今回の変換は「日付付きの時刻(datetime)」とは異なり、単なる時間の長さ(duration)を扱うものである点に注意してください。
5. まとめ
- Pythonでは
datetime.timedelta
を使って、秒から「HH:MM:SS」形式への変換が簡単にできます。 split()
とmap()
を使えば、「HH:MM:SS」から秒への変換も自在に行えます。- 処理時間の可視化、ユーザー入力の正規化、ログ時間管理などに実務で役立つ技術です。
- 形式ミスへの対策やバリデーション処理も加えることで、堅牢なコードになります。
今回紹介した変換技術は、Webアプリ、IoTデバイスの稼働時間集計、機械学習の特徴量生成など幅広い場面で活躍します。Python学習の一環として、ぜひ実装して慣れておきましょう!