ToolAct工具行動

線上碼錶

免費線上碼錶,支援毫秒級精度和分段計時

00:00:00.000

什麼是線上碼錶?

線上碼錶是一種從零開始向上計時的精密計時工具,通常支援毫秒級精度。它和倒數計時器不同:碼錶回答的是「這件事花了多久?」,非常適合運動訓練、實驗記錄、演講排練、烹飪計時、集中開發等需要追蹤耗時的情境。本工具完全在瀏覽器中執行,使用 requestAnimationFrame 實現流暢顯示更新,使用 performance.now() 進行單調時間測量,即使系統時間被調整也能保持精確。計次功能可以記錄分段成績並標示最快/最慢圈,所有資料僅保存在本機,不會上傳。

使用方式

快速上手

  1. 點選「開始」啟動計時,顯示格式為 時:分:秒.毫秒
  2. 計時過程中點選「計次」記錄分段成績,碼錶不會停止
  3. 點選「暫停」凍結顯示,再點「開始」繼續計時
  4. 點選「重置」清除計時器和所有計次記錄

使用技巧

  • 碼錶使用 requestAnimationFrame 實現約 16ms 的顯示更新頻率,使用 performance.now() 保證精確計時。
  • 保持分頁可見可獲得最流暢的顯示。背景分頁可能會限制動畫幀更新。
  • 計次成績用顏色區分:綠色為最快圈,紅色為最慢圈。

使用場景

運動健身訓練為跑步分圈、游泳間歇、騎行分段或健身房循環訓練計時。記錄每圈資料,查看最快和最慢圈,幫助控制節奏和追蹤進步。
實驗記錄與資料蒐集測量反應時間、計時化學反應過程或記錄觀察間隔。毫秒級顯示為科學計時提供足夠精度,無需專用硬體。
演講與公開發言為演講、簡報或路演排練計時。使用計次功能分別記錄各章節或每頁投影片的時長,回顧哪些部分耗時最長並調整節奏。
烹飪與烘焙追蹤每個步驟的實際耗時——從備菜到裝盤。計次功能讓你在總計時執行的同時,分別測量各階段(切菜、翻炒、靜置)的用時。
集中開發與效率管理為編碼會話、除錯過程或番茄工作法計時。碼錶會一直執行直到你手動停止,讓你獲得任務實際耗時的真實資料。

技術原理

碼錶引擎完全避免了容易漂移的 setInterval 模式。它使用 requestAnimationFrame(rAF)驅動顯示更新,以 performance.now() 作為基準時間源。使用者點選「開始」時,引擎記錄當前 performance.now() 時間戳作為 startTime。在每一幀動畫中,計算 elapsed = accumulated + (performance.now() - startTime),其中 accumulated 儲存了最近一次暫停前的累計時間。這種雙變數模型(累計時間 + 執行時增量)能夠正確處理暫停/恢復循環,不會丟失次毫秒級精度。 選擇 performance.now() 而非 Date.now() 是因為它是單調遞增的——不會因 NTP 校正、手動調整時鐘或日光節約時間切換而跳變。它還能提供次毫秒級解析度(現代瀏覽器中通常為 5 微秒粒度),使其成為短時間、高精度計時的正確選擇。rAF 回呼被限制在顯示器更新率(通常 60 Hz ≈ 16.67 ms,高更新率螢幕可達 120 Hz),因此視覺更新流暢但並非時間基準——實際經過時間來自 performance.now() 計算,始終保持正確。 計次功能在點選「計次」按鈕時捕獲當前 elapsedMs,透過與前一圈的總時間相減計算分段差值。最快和最慢圈透過 Math.min/Math.max 比較所有圈差值得出,分別用綠色和紅色標示。所有狀態儲存在 React 的 useState 鉤子中,位於客戶端元件內,不進行持久化或傳輸——碼錶本身是暫時的,關閉頁面或點選「重置」按鈕後完全清除。

  • performance.now() 提供單調遞增的次毫秒級時間戳,不受系統時鐘變化影響。
  • requestAnimationFrame 以顯示器更新率(60–120 Hz)驅動顯示更新,呈現流暢。
  • 累計時間 + 執行時增量模型處理暫停/恢復,不損失精度。
  • 計次差值透過 currentTotal - previousTotal 計算,實現精確分段計時。
  • 所有計算在瀏覽器本機完成,無伺服器通訊或資料上傳。

範例

田徑跑道 —— 400 公尺分圈

第 1 圈 -> 01:12.450  (+01:12.450)
第 2 圈 -> 02:26.180  (+01:13.730)
第 3 圈 -> 03:38.910  (+01:12.730)
第 4 圈 -> 04:50.320  (+01:11.410  最快)

演講排練 —— 逐頁計時

開場     -> 00:45.200  (+00:45.200)
問題     -> 02:10.850  (+01:25.650)
方案     -> 04:35.120  (+02:24.270)
展示     -> 07:10.430  (+02:35.310)
總結     -> 08:25.610  (+01:15.180)
總計:8 分 25 秒 —— 未超過 10 分鐘目標

HIIT 訓練 —— 間歇追蹤

第 1 組  -> 00:30.150  (+00:30.150)
休息 1  -> 00:45.320  (+00:15.170)
第 2 組  -> 01:15.480  (+00:30.160)
休息 2  -> 01:30.510  (+00:15.030)
第 3 組  -> 02:00.670  (+00:30.160  最慢)
第 4 組  -> 02:30.520  (+00:29.850  最快)

常見問題

碼錶的精度有多高?

碼錶使用 performance.now(),提供次毫秒級精度(現代瀏覽器中通常為 5 微秒粒度)。顯示透過 requestAnimationFrame 以約每秒 60 幀更新,視覺更新與真實值偏差在 16 ms 以內。對大多數實用場景——運動、烹飪、演講——這完全足夠。

切換分頁後碼錶還會繼續計時嗎?

會的。經過時間是基於絕對的 performance.now() 時間戳計算的,而非累計計數。切換回分頁時,顯示會立刻呈現正確的經過時間。但 requestAnimationFrame 在背景分頁中會被限制,因此視覺更新可能暫停,直到你返回分頁。

電腦進入睡眠會怎樣?

performance.now() 是單調遞增的,但在系統暫停期間不會推進。電腦喚醒後,碼錶顯示的時間將不包含睡眠期間的時長——對大多數計時情境,這是正確的行為。

可以匯出或儲存計次記錄嗎?

碼錶目前不支援儲存或匯出計次資料。所有計次記錄儲存在記憶體中,重置計時器或關閉頁面後會被清除。如需持久記錄,請考慮手動複製顯示的時間,或使用專用的運動追蹤裝置。

為什麼使用 performance.now() 而不是 Date.now()?

performance.now() 是單調遞增的——永遠不會倒退。Date.now() 在系統時鐘被調整時(NTP 同步、手動修改、日光節約時間切換)可能會跳躍數秒甚至數分鐘。對短時間計時,performance.now() 是正確的選擇。它還能提供次毫秒級解析度,而 Date.now() 只有毫秒級。

有任何資料會上傳到伺服器嗎?

不會。碼錶完全在瀏覽器中執行。計時資料、計次記錄或使用資訊不會傳送到任何伺服器。頁面載入後即可離線使用。

碼錶和倒數計時器有什麼區別?

碼錶從零開始向上計時,回答「花了多久時間?」。倒數計時器從設定時長開始遞減到零,回答「還剩多久時間?」。本工具是碼錶;如需倒數計時功能,請使用倒數計時器工具。