若要將秒數轉換為 HH:MM:SS 格式,請將總數除以 3,600 以取得小時數,再將餘數除以 60 以取得分鐘數,剩下的部分即為秒數欄位。此結果就是 SI 定義中經過時間的表示方式,以兩位數的小時、分鐘與秒數欄位呈現——但與時鐘有一項重要差異:小時數允許超過 23,因此多日的間隔能保留其所包含的每一個完整小時。例如,98,765 秒會變成 27:26:05,而不是 03:26:05。此轉換純粹是算術運算,不涉及任何時區、日曆日期或日光節約時間偏移,因為它描述的是已經過的 SI 秒數,而非一天中的牆上時鐘時間。輸入範圍內的每一個完整秒數,都會透過整數除法精確保留,因此輸出字串是確定性的,並且可以無損地反推。這種格式是人類閱讀原始機器時長(例如影片播放時長、伺服器記錄、運動計時器、媒體檔案長度)最常見的方式,讓一長串的秒數能夠一目了然。

convert seconds to hh mm ss format
將秒數轉換為 HH:MM:SS 格式,且不於 24 小時進位

HH:MM:SS 實際代表的意義

HH:MM:SS 是「小時、分鐘、秒數」的縮寫,通常每個欄位以兩位數表示,欄位之間以冒號分隔——例如 02:17:54。BIPM SI 手冊定義一分鐘為剛好 60 秒,一小時為剛好 3,600 秒,因此這種格式只是以三層巢狀單位來書寫已經過的 SI 秒數的一種方式。在本指南中 HMS 意思相同:小時、分鐘、秒數。像 01:00:00 這樣的值應讀為「一小時、零分鐘、零秒」,而非時鐘上的上午 1:00。

關於經過時間的重點在於它不會進位。牆上時鐘時間每天都會在 24 小時時歸零,因此 25:00:00 並不是有效的時鐘讀數。相對地,經過時間只是小時的總計數,可以持續累加,這就是為什麼轉換器會將 27 小時的經過時間格式化成 27:26:05,而不是捨棄第一天。

拆分秒數背後的數學

此轉換是依固定順序進行的三項整數運算。首先,總小時數由 floor(總秒數 ÷ 3,600) 得出。其次,扣除這些整數小時後剩餘的秒數,再以 floor 除以 60 得到分鐘數。第三,剩下的部分即為秒數欄位。由於每一步都使用前一步的整數餘數,因此數值始終落在其慣用範圍內:分鐘與秒數從 00 到 59,而小時數從 0 起算,向上沒有上限。

實際上這代表 7,500 秒可分解為 7,500 ÷ 3,600 = 2 小時,剩餘 300 秒,接著 300 ÷ 60 = 5 分鐘,最後剩下 0 秒——因此格式為 02:05:00。這個公式對小輸入來說簡單到足以手算,但在邊界情況下(剛好低於 3,600 秒、剛好 60 秒、剛好一小時)以及多日總計的情況下容易出錯,這正是專屬頁面能發揮作用的地方。

如何將秒數轉換為 HH:MM:SS 格式

從原始秒數產生乾淨、可直接複製的 HH:MM:SS 字串,最快的方法就是使用秒數轉 HMS 轉換器:

  1. 在輸入欄位中輸入一個非負整數的經過秒數。
  2. 選擇「轉換為 HH:MM:SS」,並在結果卡片上檢視總小時、分鐘與秒數欄位。
  3. 使用複製按鈕複製格式化後的數值,請記得多日時長的小時欄位會保持在 23 以上。

相同的算術邏輯也已內建於試算表中(Excel 的 INT 與 MOD、Google 試算表的 FLOOR 與 MOD、Python 與 JavaScript 的 // 與 % 運算子),但轉換器能讓你不必每次重新推導 floor 除法的模式,也不會意外地使用浮點數除法而造成進位——在較大的總計上,浮點數除法可能會產生一秒的誤差。

範例詳解:98,765 秒逐步推導

一個端到端的完整演練能讓公式更具體。取 98,765 秒,這略多於 27 小時,也是轉換器設計所依據的範例。

小時:floor(98,765 ÷ 3,600) = floor(27.4347…) = 27。 扣除小時後的餘數:98,765 − (27 × 3,600) = 98,765 − 97,200 = 1,565 秒。 分鐘:floor(1,565 ÷ 60) = floor(26.0833…) = 26。 扣除分鐘後的餘數:1,565 − (26 × 60) = 1,565 − 1,560 = 5 秒。 秒數:5。

因此 98,765 秒的格式為 27:26:05。反推驗證:27 × 3,600 + 26 × 60 + 5 = 97,200 + 1,560 + 5 = 98,765。輸出完全可逆,這正是轉換器保留完整小時數而非進位的原因。

轉換器測試的邊界輸入

此頁面已透過一組小型輸入進行驗證,每個輸入各自測試不同的進位情況,以下是值得了解的臨界值:

輸入(秒)測試內容
0零基準——格式為 00:00:00。
59分鐘進位前的最後一秒。
60剛好一分鐘的邊界。
3,599小時進位前的最後一秒。
3,600剛好一小時的邊界。
98,765混合欄位,且小時欄超過 23。

這些案例可作為心算檢查的實用參考:若你的手算結果與轉換器在這些輸入上不一致,錯誤幾乎一定是缺少 MOD 步驟,或是因為使用普通除法而非整數除法而產生的進位誤差。

轉換器會拒絕的輸入

此頁面僅接受完整、非負的整數。以下三種輸入形式會被明確阻擋。

小數秒數(例如 1.5)會被拒絕,因為表示分數秒需要額外的精度與分隔符號慣例(毫秒、微秒,或固定小數位數的次秒數欄位),這超出了本頁面的範圍。若你需要毫秒,請使用支援毫秒的時間單位轉換器。

負數同樣會被拒絕。像 −3,600 這類帶正負號的偏移量並非描述經過時間,而是描述相對於參考點的位置,這是另一個不同的概念。請僅使用非負數值。

超過 JavaScript 最大安全整數(即 9,007,199,254,740,991)的極大數字也會被拒絕。超過此上限,連續的整數可能會塌縮為相同的浮點數值,這會悄悄損壞秒數欄位。明確的上限設定,是為了傾向於回報一個可審核的錯誤,而非產出一個看似合理但實際錯誤的時間戳記。

為何時長中的小時數會超過 23

時鐘時間會在 24 小時進位,因為它代表的是 24 小時制一天中的某個位置。經過時間只是已完成小時的累計數,若在 24 小時進位會遺失資訊——也就是第一個整天之後的每一個完整日數。這個被捨去的整天,正是許多試算表技巧在將時長套用時間格式遮罩時產生錯誤結果的原因:以 24 小時制時間遮罩輸出的 98,765 秒會顯示為 03:26:05,這會悄悄地少掉整整一天。

秒數轉 HMS 轉換器是為經過時間的情境所設計,因此小時欄刻意不設上限。將一般的小時值補零為兩位數(01、02、…、09)能讓掃讀更為容易,也符合傳統 HH:MM:SS 表示法的視覺節奏,但該欄位本身可成長為三位、四位甚至更多位數,而不會被截斷。125 小時的播放時長會顯示為 125:00:00,而非 05:00:00。

經過時間 HH:MM:SS 字串的常見用途

HH:MM:SS 是許多情境下,原始機器時長預設的人類可讀格式。下表概述了其出現的場景:

情境為何 HH:MM:SS 有助益
影片與音訊播放時長播放器回報的是總秒數,但人類是以 HH:MM:SS 閱讀時長。
運動與碼錶記錄分段計時與總時間以兩位數欄位呈現更易於掃讀。
伺服器記錄與工作執行時長背景工作常在午夜後才完成,因此小時欄經常超過 23。
測試輸出與基準測試報告列出經過的牆上時鐘秒數;HH:MM:SS 能讓它們一眼可讀。
工時表輸入薪資工具通常接受 HH:MM:SS 總計,而可加總一週打卡時間的工時計算機也能對應相同的格式。

若目的地需要「天數元件」加上 00–23 的時鐘欄位(例如「1 天,03:26:05」),請另外將總小時數除以 24,或使用帶有天數欄位的時長格式化工具。若目的地期望的是 ISO 8601 時長語法(例如 PT27H26M5S),請勿將冒號字串重新標記——請直接輸出該系統所需的格式。

延伸閱讀:本工具之外

兩個相關工具涵蓋了本轉換器刻意不處理的情境。若要處理小數秒、毫秒或微秒,請使用支援較小精度等級與相應分隔符號慣例的更廣泛時間單位轉換器。若要處理位於民用時間軸上的時長——例如兩個牆上時鐘時間戳記之間的差距——則應使用懂得日期、時區與日光節約時間的專屬時長計算器,因為已過的 SI 秒數概念,與兩個具名時刻之間的牆上時鐘間隔並不相同。

至於其他所有情境——一個乾淨的整數秒數,需要以小時、分鐘與秒數呈現,且允許小時數超過 23——秒數轉 HMS 轉換器是從原始整數到可直接複製的 HH:MM:SS 字串最直接的路徑。

如需深入了解,請參閱24 點求解器趣味數學遊戲:找出所有解答。

如需深入了解,請參閱秒數轉 HH:MM:SS 公式:變數與限制。