Python|秒単位の時間と「HH:MM:SS」形式を相互に変換する

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学習の一環として、ぜひ実装して慣れておきましょう!

タイトルとURLをコピーしました