請以 24 小時制輸入開始時刻與結束時刻。輸入休息時間(分),也會同時算出扣除休息後的實際工時。
這個頁面可以做什麼
- 由「9 點到 17:30」這樣的開始時刻與結束時刻(24 小時制),馬上算出中間的時間(出勤時數)
- 輸入休息時間(分),也會同時算出扣除休息後的實際工時
- 也會顯示像「7 小時 30 分 → 7.5 小時」這樣,可直接拿來乘時薪的十進位時數(以小數表示的時數),以及實際工時的總分鐘數
- 像「22 點到隔天早上 6 點」這樣,結束時刻比開始時刻早的夜班(跨日)工時也能計算
- 公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
9 點到 17:30 的班、休息 1 小時,實際工時是 7 小時 30 分=十進位時數 7.5 小時。時薪 200 元的話,就是 \(200 \times 7.5 = 1500\) 元。
如果把「7 小時 30 分」寫成「7.3 小時」,薪水就會算錯。只要知道「把分除以 60 換成小數」這一個換算,就能自己核對薪資單、估算排班的收入。
公司管理出勤時,會由每天上班、下班的時刻算出出勤時數,扣除休息得到實際工時,再按月累加來計算薪資。例如一週 8 + 8 + 7.5 + 8 + 8.5 = 40 小時。
出勤系統的內部,也是重複這個頁面「把時刻換成分鐘相減,再扣掉休息」的計算。手寫的打卡單或小店的排班表,只要懂這個算法,用計算機和紙筆就足以完成統計。
22 點到隔天早上 6 點的夜班,只看數字是「6 − 22」,會變成負數,但加上 1 天的 24 小時(1440 分),就知道是上班 8 小時。
在護理、照護、工廠、便利商店等有夜班的工作,跨日的時間計算是每天的基本功。懂得原理,就能自己確認排班表上的工時對不對。
台灣的勞動基準法規定,正常工時每日不超過 8 小時、每週不超過 40 小時;延長工時在 2 小時以內的部分,要按平日每小時工資加給 1/3 以上。如果 8 點上班到 17:30、休息 30 分鐘,實際工時是 9 小時,超過 8 小時的 1 小時就是加班。時薪 200 元的話,這 1 小時的加班費至少是 \(200 \times (1 + \frac{1}{3}) \approx 267\) 元。
能正確算出實際工時,就能察覺自己是否工作過度,也能自己確認加班費的計算依據,是保障自身權益的第一步(加班費的詳細規定,請依公司的規章與相關法令確認)。
從 19:15 讀書到 21:45,當天的讀書時間就是 2 小時 30 分。只要記下開始與結束的時刻,之後就能用這個減法統計每天累積的時間。
證照考試的讀書紀錄、在家工作的工作日誌等,把「從幾點到幾點」換成「做了幾小時」的情況,不限於上班,幾乎每天都會遇到。
公式
符號與用語解說
符號
| \(h\)、\(m\) | h、m | 時刻的「時」(\(h\))和「分」(\(m\)),以 24 小時制表示(例如:下午 5 點 30 分就是 \(h = 17\)、\(m = 30\))。分別是英文 hour、minute 的第一個字母。 |
| \(T\) | T | 把時刻換成「從半夜 0 點算起的分鐘數」的值,用 \(T = 60h + m\) 求出。(例如:17:30 → 1050 分) |
| \(T_1\)、\(T_2\) | T 下標 1、T 下標 2 | 開始時刻換成分鐘的值(\(T_1\))和結束時刻換成分鐘的值(\(T_2\))。(例如:9:00 → \(T_1 = 540\),17:30 → \(T_2 = 1050\)) |
| \(E\) | E | 以分鐘表示的出勤時數(從開始到結束的經過時間),是英文 elapsed(經過的)的第一個字母。 |
| \(B\) | B | 休息時間(分),是英文 break(休息)的第一個字母。 |
| \(W\) | W | 以分鐘表示的實際工時(出勤時數扣除休息時間,實際工作的時間),是英文 work(工作)的第一個字母。 |
| \(H\) | H(大寫) | 把實際工時以「小時」為單位、用小數表示的十進位時數,用 \(H = W \div 60\) 求出。請和小寫的 \(h\)(時刻的「時」)區分。(例如:450 分 → 7.5 小時) |
| \(1440\) | 一千四百四十 | 1 天的分鐘數,\(24 \times 60 = 1440\) 分。在跨日(開始在前一天)的計算中要加上它。 |
用語
| 時刻 | 像「9 時 00 分」這樣的某一個時間點,要和「8 小時 30 分」這種表示長度的「時間量」區分。這個頁面求的是夾在兩個時刻之間的時間長度。 |
| 時間量 | 像「8 小時 30 分」這樣的時間長度,要和「9 時 00 分」這種表示某一個時間點的「時刻」區分。這個頁面求的是夾在兩個時刻之間的時間長度。 |
| 24 小時制 | 把一天用 0 時~23 時表示的時刻寫法。下午的時刻要加 12(下午 5 點 30 分 → 17:30,晚上 10 點 → 22 時)。半夜 12 點是「0 時」。 |
| 出勤時數 | 從開始時刻到結束時刻、包含休息在內的整段時間。以上班來說,相當於從打卡上班到打卡下班「待在工作場所的時間」。 |
| 實際工時 | 出勤時數扣除休息時間,實際工作的時間。時薪制的打工,薪水通常就是依這個實際工時計算。台灣的勞動基準法規定,連續工作 4 小時,至少要有 30 分鐘的休息。 |
| 十進位時數 | 把「7 小時 30 分」寫成「7.5 小時」這樣以小數表示的時數。因為是把分除以 60 換成小數,所以可以直接用在時薪 × 時數的乘法。請注意「7 小時 30 分」不是「7.3 小時」。 |
| 跨日 | 像夜班這樣,上班途中日期改變。結束時刻的數字會比開始時刻小,所以要加上 1 天的 1440 分來計算。 |
| 六十進位 | 滿 60 就成為上一個單位的計數方法,60 分進位成 1 小時。和平常的小數(十進位)混在一起時很容易算錯,所以這個計算機會先把全部統一成分鐘再計算。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到不懂的地方時,回頭複習這張表的內容是最快的方法。
| 時刻與時間量(國小二~三年級,7~9 歲) |
|
| 上午、下午與 24 小時制(國小四年級,9~10 歲) |
|
| 退位減法與有餘數的除法(國小二~三年級,7~9 歲) |
|
| 小數(國小三~五年級,8~11 歲) |
|
用 Excel 計算的方法
| 時(24 小時制) | 17 |
| 分 | 30 |
| 換成分鐘的時刻 | =B1*60+B2 |
| 開始:時(24 小時制) | 9 |
| 開始:分 | 0 |
| 結束:時(24 小時制) | 17 |
| 結束:分 | 30 |
| 開始換成分鐘的值 | =B1*60+B2 |
| 結束換成分鐘的值 | =B3*60+B4 |
| 出勤時數(分) | =IF(B6<B5,B6-B5+1440,B6-B5) |
| 出勤:小時 | =QUOTIENT(B7,60) |
| 出勤:分 | =MOD(B7,60) |
| 出勤時數(分) | 510 |
| 休息時間(分) | 60 |
| 實際工時(分) | =B1-B2 |
| 實際:小時 | =QUOTIENT(B3,60) |
| 實際:分 | =MOD(B3,60) |
| 十進位時數 | =ROUND(B3/60,2) |
第二個表格在 B1~B4 填入開始與結束的時刻,B5、B6 會換成分鐘(540、1050),B7 顯示出勤時數(510 分)。IF 函數會在「結束比較小時加上 1440」,所以夜班(例如:開始 22、結束 6)的跨日也能正確計算。B8、B9 是用 QUOTIENT(除法的商)和 MOD(除法的餘數)分成小時和分,答案是 8 小時 30 分。
第三個表格在 B1 填入出勤時數(分)、B2 填入休息時間(分),B3 會顯示實際工時(450 分),B4、B5 顯示 7 小時 30 分,B6 顯示十進位時數(7.5。除不盡時用 ROUND 四捨五入到小數第 2 位)。用時薪 × B6 就能算出薪水。只要把 B 欄改成自己的數值就能使用。
用 Google 試算表計算的方法
| 時(24 小時制) | 17 |
| 分 | 30 |
| 換成分鐘的時刻 | =B1*60+B2 |
| 開始:時(24 小時制) | 9 |
| 開始:分 | 0 |
| 結束:時(24 小時制) | 17 |
| 結束:分 | 30 |
| 開始換成分鐘的值 | =B1*60+B2 |
| 結束換成分鐘的值 | =B3*60+B4 |
| 出勤時數(分) | =IF(B6<B5,B6-B5+1440,B6-B5) |
| 出勤:小時 | =QUOTIENT(B7,60) |
| 出勤:分 | =MOD(B7,60) |
| 出勤時數(分) | 510 |
| 休息時間(分) | 60 |
| 實際工時(分) | =B1-B2 |
| 實際:小時 | =QUOTIENT(B3,60) |
| 實際:分 | =MOD(B3,60) |
| 十進位時數 | =ROUND(B3/60,2) |
用 Python 計算的方法
# 開始時刻與結束時刻(24 小時制),以及休息時間(分)
start_hour, start_minute = 9, 0
end_hour, end_minute = 17, 30
rest_minutes = 60
start_total = start_hour * 60 + start_minute # 開始時刻換成分鐘
end_total = end_hour * 60 + end_minute # 結束時刻換成分鐘
elapsed_minutes = end_total - start_total # 出勤時數(分)
if elapsed_minutes < 0:
# 結束比開始早 -> 當成開始在前一天(跨日),加上 1 天
elapsed_minutes += 1440
work_minutes = elapsed_minutes - rest_minutes # 實際工時(分)
decimal_hours = round(work_minutes / 60, 2) # 十進位時數(計算時薪用)
def format_minutes(total_minutes):
# 把分鐘換成「8 小時 30 分」的形式(0 分時為「0 小時」)
hours, minutes = divmod(total_minutes, 60)
if hours == 0 and minutes == 0:
return "0 小時"
if hours == 0:
return f"{minutes} 分"
if minutes == 0:
return f"{hours} 小時"
return f"{hours} 小時 {minutes} 分"
print(f"出勤時數:{format_minutes(elapsed_minutes)}({elapsed_minutes} 分)")
print(f"實際工時:{format_minutes(work_minutes)}({work_minutes} 分)")
print(f"十進位時數:{decimal_hours} 小時")
用 LaTeX 等數學式語言的寫法(可直接複製)
T = 60h + m
T = 60h + m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>T</mi><mo>=</mo>
<mn>60</mn><mi>h</mi>
<mo>+</mo><mi>m</mi>
</mrow>
</math>
T = 60h + m
totalMinutes = 60*h + m
T := 60*h + m;
T = 60*h + m;
T = 60h + m
E = T₂ − T₁ (T₂ ≥ T₁), E = T₂ − T₁ + 1440 (T₂ < T₁)
E = T_2 - T_1 \quad (T_2 \ge T_1), \qquad E = T_2 - T_1 + 1440 \quad (T_2 < T_1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>E</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>E</mi><mo>=</mo>
<msub><mi>T</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>T</mi><mn>1</mn></msub>
<mo>+</mo><mn>1440</mn>
</mrow>
</math>
E = T_2 - T_1, E = T_2 - T_1 + 1440
elapsedMinutes = If[t2 >= t1, t2 - t1, t2 - t1 + 1440]
E := `if`(t2 >= t1, t2 - t1, t2 - t1 + 1440);
if t2 >= t1, E = t2 - t1; else, E = t2 - t1 + 1440; end
E = T_2 - T_1 (T_2 ≥ T_1), E = T_2 - T_1 + 1440 (T_2 < T_1)
W = E − B, H = W ÷ 60
W = E - B, \quad H = \dfrac{W}{60}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>W</mi><mo>=</mo>
<mi>E</mi><mo>−</mo><mi>B</mi>
<mo>,</mo><mspace width="0.7em"/>
<mi>H</mi><mo>=</mo>
<mfrac><mi>W</mi><mn>60</mn></mfrac>
</mrow>
</math>
W = E - B, H = W / 60
workMinutes = elapsedMinutes - restMinutes; decimalHours = workMinutes / 60
W := E - B; H := W / 60;
W = E - B; H = W / 60;
W = E - B, H = W / 60
請 ChatGPT 幫忙計算的方法
你是工時計算助理。請務必實際執行 Python 程式碼來進行下面的計算,並只根據執行結果的數值回答(不要用心算或猜測作答)。 某次上班的開始時刻是 9:00、結束時刻是 17:30(都是 24 小時制,同一天),休息 60 分鐘。 請求出下列各項: 1. 出勤時數(從開始到結束的時間,以「◯ 小時 ◯ 分」的形式) 2. 實際工時(出勤時數扣除休息,以「◯ 小時 ◯ 分」的形式) 3. 把實際工時換成十進位時數(實際工作的分鐘數除以 60)與總分鐘數 請先用「60 × 時 + 分」把每個時刻換成分鐘再相減。結束時刻比開始時刻早時,請當成開始在前一天(跨日),加上 1440 分。 請列出使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權