請以 24 小時制輸入開始與結束的時刻。跨日時也請輸入開始日期與結束日期(同一天內的計算,日期保持空白即可)。
這個頁面可以做什麼
- 「8:30 到 17:30」這樣兩個時刻之間的經過時間,馬上以「9 小時」這種小時、分、秒的形式算出來
- 輸入開始日期與結束日期,「7 月 10 日 22 點到 7 月 12 日 6:30」這種跨日的經過時間,也能以「1 天 8 小時 30 分」的形式算出(也支援閏年)
- 同時顯示換算成「32.5 小時」這樣的總時數(小數的時數)、總分鐘數與總秒數
- 日期空白、結束時刻比開始時刻早時,會當成開始在前一天來計算(跨夜的時間差也可以)
- 公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
到日本旅遊時搭乘的夜行巴士(例如東京到大阪),22:00 出發、隔天早上 6:30 抵達,即使跨了日,也能算出乘車時間是 \(23400 - 79200 + 86400 = 30600\) 秒 = 8 小時 30 分。
知道所需時間,對估算在車上能睡多久、安排抵達後的行程都很有幫助。即使時刻表上沒寫所需時間的地方路線或轉乘,只要知道出發與抵達的時刻,就能自己算出來。
23:30 睡覺、早上 6:15 起床,睡眠時間就是 6 小時 45 分。因為跨日,可以直接使用當成開始在前一天的計算(加上 86400 秒)。
睡眠時間是健康管理最基本的紀錄。每天記下就寢、起床的時刻,就能用這個減法自己統計「這週平均睡了幾小時」。
9:00 起跑、13:57 抵達終點的路跑馬拉松,成績就是 4 小時 57 分。即使忘了帶碼錶,只要知道起跑與抵達終點的時刻,就能用減法算出經過時間。
田徑、游泳、自行車等的計時,正是「兩個時刻的差」的計算。能正確處理分、秒的六十進位退位,是準確比較成績的基礎。
從 19:15 讀書到 21:45,當天的讀書時間就是 2 小時 30 分。只要記下開始與結束的時刻,之後就能用這個減法統計每天累積的時間。
證照考試的讀書紀錄、在家工作的工作日誌等,把「從幾點到幾點」換成「做了幾小時」的情況,幾乎每天都會遇到。
「從 7 月 10 日 18 點,到 7 月 12 日早上 9 點的截止時間還有幾小時?」用日期相差的 2 天,可以算出 \(86400 \times 2 + 32400 - 64800 = 140400\) 秒 = 39 小時(1 天又 15 小時)。
以「小時」為單位掌握剩下的時間,比「還有 2 天」的感覺更能做出實際的工作計畫。火箭發射或考試前的倒數計時,也是這種跨日的時間差計算。
公式
符號與用語解說
符號
| \(h\)、\(m\)、\(s\) | h、m、s | 時刻的「時」(\(h\))、「分」(\(m\))、「秒」(\(s\)),以 24 小時制表示(例如:下午 5 點 30 分就是 \(h = 17\)、\(m = 30\)、\(s = 0\))。分別是英文 hour、minute、second 的第一個字母。 |
| \(T\) | T | 把時刻換成「從半夜 0 點算起的秒數」的值,用 \(T = 3600h + 60m + s\) 求出。(例如:17:30:00 → 63000 秒) |
| \(T_1\)、\(T_2\) | T 下標 1、T 下標 2 | 開始時刻換成秒的值(\(T_1\))和結束時刻換成秒的值(\(T_2\))。(例如:8:30:00 → \(T_1 = 30600\),17:30:00 → \(T_2 = 63000\)) |
| \(h_1, m_1\)、\(h_2, m_2\) | h 下標 1、m 下標 1、h 下標 2、m 下標 2 | 直式的公式中使用的開始時刻的時和分(下標 1),以及結束時刻的時和分(下標 2)。 |
| \(D\) | D | 經過時間(從開始到結束的時間長度),是英文 duration(持續時間)的第一個字母。這個頁面的計算機會先用秒求出,再換成「9 小時」「3 小時 59 分」這樣的顯示。 |
| \(n\) | n | 從開始日期到結束日期相差的天數,依日曆只數日期。(例如:7 月 10 日 → 7 月 12 日就是 \(n = 2\)) |
| \(3600\)、\(86400\) | 三千六百、八萬六千四百 | 1 小時的秒數(\(60 \times 60 = 3600\) 秒)和 1 天的秒數(\(24 \times 3600 = 86400\) 秒)。 |
用語
| 時刻 | 像「8 時 30 分」這樣的某一個時間點,要和「9 小時」這種表示長度的「時間量」區分。這個頁面求的是夾在兩個時刻之間的時間長度(經過時間)。 |
| 時間量 | 像「9 小時」這樣的時間長度,要和「8 時 30 分」這種表示某一個時間點的「時刻」區分。這個頁面求的是夾在兩個時刻之間的時間長度(經過時間)。 |
| 經過時間 | 從開始的時刻到結束的時刻所經過的時間長度,也就是這個頁面要求的答案。 |
| 24 小時制 | 把一天用 0 時~23 時表示的時刻寫法。下午的時刻要加 12(下午 5 點 30 分 → 17:30,晚上 10 點 → 22 時)。半夜 12 點是「0 時」。 |
| 六十進位 | 滿 60 就成為上一個單位的計數方法,60 秒進位成 1 分,60 分進位成 1 小時。和平常的十進位混在一起時很容易算錯,所以這個計算機會先把全部統一成秒再計算。 |
| 退位 | 減法中,某一位不夠減時,向上一位借來。時刻的直式不是借 10,而是借 60(1 小時 = 60 分,1 分 = 60 秒)。 |
| 跨日 | 像夜行巴士或夜班這樣,從開始到結束之間日期改變。不填日期計算時,結束時刻的數字會比開始時刻小,所以會當成開始在前一天,加上 1 天的 86400 秒(填了日期時,則用相差的天數計算)。 |
| 閏年 | 有 2 月 29 日的年份(大約每 4 年一次)。在跨日的計算中數相差的天數時,中間夾著 2 月 29 日就會多 1 天。這個計算機會依照日曆正確計算。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到不懂的地方時,回頭複習這張表的內容是最快的方法。
| 時刻與時間量(國小二~三年級,7~9 歲) |
|
| 上午、下午與 24 小時制(國小四年級,9~10 歲) |
|
| 退位減法(國小二年級,7~8 歲) |
|
| 有餘數的除法(國小三~四年級,8~10 歲) |
|
| 小數(國小三~五年級,8~11 歲) |
|
用 Excel 計算的方法
| 時(24 小時制) | 17 |
| 分 | 30 |
| 秒 | 0 |
| 換成秒的時刻 | =B1*3600+B2*60+B3 |
| 開始:時(24 小時制) | 8 |
| 開始:分 | 30 |
| 開始:秒 | 0 |
| 結束:時(24 小時制) | 17 |
| 結束:分 | 30 |
| 結束:秒 | 0 |
| 開始換成秒的值 | =B1*3600+B2*60+B3 |
| 結束換成秒的值 | =B4*3600+B5*60+B6 |
| 經過時間(秒) | =IF(B8<B7,B8-B7+86400,B8-B7) |
| 經過:小時 | =QUOTIENT(B9,3600) |
| 經過:分 | =QUOTIENT(MOD(B9,3600),60) |
| 經過:秒 | =MOD(B9,60) |
| 開始日期時間 | =DATE(2026,7,10)+TIME(22,0,0) |
| 結束日期時間 | =DATE(2026,7,12)+TIME(6,30,0) |
| 經過(序列值的差=天數) | =B2-B1 |
| 經過時間的顯示(時:分:秒) | =TEXT(B2-B1,"[h]:mm:ss") |
| 總時數(小數) | =(B2-B1)*24 |
第二個表格在 B1~B6 填入開始與結束的時刻,B7、B8 會換成秒(30600、63000),B9 顯示經過時間的秒數(32400)。IF 函數會在「結束比較小時加上 86400」,所以也能處理跨夜的時間差。B10~B12 是用 QUOTIENT(除法的商)和 MOD(除法的餘數)分成小時、分、秒,答案是 9 小時 0 分 0 秒。
第三個表格是跨日的情況。用 DATE 函數和 TIME 函數建立日期時間,在 Excel 中會變成「1 天 = 1」的序列值,所以光是 B3 的減法,就會以「天數的小數」(約 1.3542 天)顯示經過時間。B4 的 TEXT 函數格式代碼 [h]:mm:ss 是超過 24 小時也會繼續計算小時的寫法,會顯示「32:30:00」;B5 則是把序列值乘以 24,求出總時數 32.5 小時。只要把 B 欄改成自己的數值就能使用。
用 Google 試算表計算的方法
| 時(24 小時制) | 17 |
| 分 | 30 |
| 秒 | 0 |
| 換成秒的時刻 | =B1*3600+B2*60+B3 |
| 開始:時(24 小時制) | 8 |
| 開始:分 | 30 |
| 開始:秒 | 0 |
| 結束:時(24 小時制) | 17 |
| 結束:分 | 30 |
| 結束:秒 | 0 |
| 開始換成秒的值 | =B1*3600+B2*60+B3 |
| 結束換成秒的值 | =B4*3600+B5*60+B6 |
| 經過時間(秒) | =IF(B8<B7,B8-B7+86400,B8-B7) |
| 經過:小時 | =QUOTIENT(B9,3600) |
| 經過:分 | =QUOTIENT(MOD(B9,3600),60) |
| 經過:秒 | =MOD(B9,60) |
| 開始日期時間 | =DATE(2026,7,10)+TIME(22,0,0) |
| 結束日期時間 | =DATE(2026,7,12)+TIME(6,30,0) |
| 經過(序列值的差=天數) | =B2-B1 |
| 經過時間的顯示(時:分:秒) | =TEXT(B2-B1,"[h]:mm:ss") |
| 總時數(小數) | =(B2-B1)*24 |
用 Python 計算的方法
from datetime import datetime
# 開始與結束的日期時間(沒有跨日時,日期填同一天)
start = datetime(2026, 7, 10, 22, 0, 0) # 2026 年 7 月 10 日 22:00:00
end = datetime(2026, 7, 12, 6, 30, 0) # 2026 年 7 月 12 日 6:30:00
duration = end - start # 經過時間(timedelta)
total_seconds = int(duration.total_seconds()) # 總秒數
hours, remainder = divmod(total_seconds, 3600) # 小時與剩下的秒數
minutes, seconds = divmod(remainder, 60) # 把剩下的分成分和秒
days, day_remainder = divmod(total_seconds, 86400) # 含天數的顯示用
print(f"經過時間:{hours} 小時 {minutes} 分 {seconds} 秒")
print(f"含天數:{days} 天 {day_remainder // 3600} 小時 {day_remainder % 3600 // 60} 分")
print(f"總時數:{total_seconds / 3600} 小時")
print(f"總分鐘數:{total_seconds / 60} 分")
print(f"總秒數:{total_seconds} 秒")
用 LaTeX 等數學式語言的寫法(可直接複製)
T = 3600h + 60m + s
T = 3600h + 60m + s
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>T</mi><mo>=</mo>
<mn>3600</mn><mi>h</mi>
<mo>+</mo><mn>60</mn><mi>m</mi>
<mo>+</mo><mi>s</mi>
</mrow>
</math>
T = 3600h + 60m + s
totalSeconds = 3600*h + 60*m + s
T := 3600*h + 60*m + s;
T = 3600*h + 60*m + s;
T = 3600h + 60m + s
D = T₂ − T₁ (T₂ ≥ T₁), D = T₂ − T₁ + 86400 (T₂ < T₁)
D = T_2 - T_1 \quad (T_2 \ge T_1), \qquad D = T_2 - T_1 + 86400 \quad (T_2 < T_1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi><mo>=</mo>
<msub><mi>T</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>T</mi><mn>1</mn></msub>
<mo>,</mo><mspace width="0.7em"/>
<mi>D</mi><mo>=</mo>
<msub><mi>T</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>T</mi><mn>1</mn></msub>
<mo>+</mo><mn>86400</mn>
</mrow>
</math>
D = T_2 - T_1, D = T_2 - T_1 + 86400
durationSeconds = If[t2 >= t1, t2 - t1, t2 - t1 + 86400]
dur := `if`(t2 >= t1, t2 - t1, t2 - t1 + 86400); # D 是 Maple 的保留字(微分運算子),所以改用 dur
if t2 >= t1, D = t2 - t1; else, D = t2 - t1 + 86400; end
D = T_2 - T_1 (T_2 ≥ T_1), D = T_2 - T_1 + 86400 (T_2 < T_1)
D = 60(h₂ − h₁) + (m₂ − m₁)
D = 60(h_2 - h_1) + (m_2 - m_1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi><mo>=</mo>
<mn>60</mn>
<mo>(</mo><msub><mi>h</mi><mn>2</mn></msub><mo>−</mo><msub><mi>h</mi><mn>1</mn></msub><mo>)</mo>
<mo>+</mo>
<mo>(</mo><msub><mi>m</mi><mn>2</mn></msub><mo>−</mo><msub><mi>m</mi><mn>1</mn></msub><mo>)</mo>
</mrow>
</math>
D = 60(h_2 - h_1) + (m_2 - m_1)
durationMinutes = 60*(h2 - h1) + (m2 - m1)
dur := 60*(h2 - h1) + (m2 - m1); # D 是 Maple 的保留字(微分運算子),所以改用 dur
D = 60*(h2 - h1) + (m2 - m1);
D = 60(h_2 - h_1) + (m_2 - m_1)
D = 86400n + T₂ − T₁
D = 86400n + T_2 - T_1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi><mo>=</mo>
<mn>86400</mn><mi>n</mi>
<mo>+</mo><msub><mi>T</mi><mn>2</mn></msub>
<mo>−</mo><msub><mi>T</mi><mn>1</mn></msub>
</mrow>
</math>
D = 86400n + T_2 - T_1
durationSeconds = 86400*n + t2 - t1
dur := 86400*n + T2 - T1; # D 是 Maple 的保留字(微分運算子),所以改用 dur
D = 86400*n + T2 - T1;
D = 86400n + T_2 - T_1
請 ChatGPT 幫忙計算的方法
你是時間計算助理。請務必實際執行 Python 程式碼來進行下面的計算,並只根據執行結果的數值回答(不要用心算或猜測作答)。 開始是 2026 年 7 月 10 日 22:00:00,結束是 2026 年 7 月 12 日 6:30:00(都是 24 小時制)。 請求出下列各項: 1. 經過時間(以「◯ 小時 ◯ 分 ◯ 秒」的形式) 2. 含天數的經過時間(以「◯ 天 ◯ 小時 ◯ 分」的形式) 3. 總時數(小數)、總分鐘數與總秒數 經過時間請用 Python 的 datetime 相減求出,再用 divmod 分成小時、分、秒。 請列出使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權