請輸入週一到週日每天的上班時間、下班時間(24 小時制)和休息(分鐘)。沒有上班的日子留空即可。填入時薪(元)也會試算薪資。
這個頁面可以做什麼
- 只要輸入週一到週日每天的上班、下班時間和休息(分鐘),就能馬上知道每天的實際工時和一週的合計(每週出勤紀錄統計)
- 每週合計會同時用「37 小時 30 分」和可以直接拿來乘時薪的十進位時數「37.5 小時」兩種形式顯示
- 填入時薪(元),就會一併算出「實際工時合計(十進位時數)× 時薪」的薪資試算
- 也支援像「22:00 上班、隔天 6:00 下班」這種夜班的跨日(下班在隔天)
- 公式的淺顯解說,以及可直接複製的 Excel、Google 試算表、Python 公式,也都整理在這個頁面
這個計算有什麼用?
平日 5 天、排 9:00~17:30 的班,每天休息 1 小時的話,實際工時是每天 7 小時 30 分 × 5 天 = 每週 37 小時 30 分。把十進位時數 37.5 小時乘上時薪 200 元,就能估算出這一週的薪水大約是 \(37.5 \times 200 = 7500\) 元。
能自己算出「這週賺了多少」,排班和收入的規劃就能靠數字而不是感覺(實際領到的金額會因加班費和勞健保等扣款而不同,正確金額請以公司的薪資單為準)。
能從打卡紀錄或出勤紀錄 App 自己統計每週的實際工時,就能確認班表上的預定和實際有沒有落差,以及薪資單上的工時欄和自己的紀錄是否一致。
公司的出勤系統裡做的,也就是這個頁面「每天算出(下班 − 上班 − 休息)再加起來」的反覆計算。了解運作方式,是保障自己工作應得報酬的第一步。
在台灣,依勞動基準法,正常工時是每日不超過 8 小時、每週不超過 40 小時,超過的部分是延長工時(加班),前 2 小時每小時至少要加給平日時薪的 1/3。例如 8:00~18:00 上班、休息 1 小時,每天的實際工時是 9 小時,其中 1 小時是延長工時;做 5 天就有 5 小時。時薪 200 元時,這 5 小時至少要領 \(200 \times \dfrac{4}{3} \times 5 \approx 1333\) 元。
另外,來台就學的僑外生在學期中,打工時數依就業服務法每週最多 20 小時(寒暑假不受此限)。規定可能會修改,詳細請向勞動部或學校確認;不論哪一種情況,這個每週統計都能讓您準確掌握自己工作了幾小時。
22:00 上班、隔天早上 6:00 下班的夜班,光看數字會是「6 − 22」而變成負數,但只要加上一天的 1440 分,就知道是上班 8 小時。
就算一週裡夜班和白班混在一起,也只要每天用同樣的規則算出實際工時再加起來,統計就不會搞錯,可以自己確認班表上的每週合計對不對。在台灣,輪班換班時,依勞動基準法,中間至少要有連續 11 小時的休息時間,排班時也可以一起確認。
只要記下「從幾點到幾點」,不限於上班,也能用同樣的計算統計準備證照考試、在家接案的副業每週花了幾小時。
看得到每週的合計,就能用數字回顧,例如「平日偷懶的部分,週末有沒有補回來」。
公式
符號與用語解說
符號
| \(T_1\)、\(T_2\) | 上班時間換算成分鐘的值(\(T_1\))和下班時間換算成分鐘的值(\(T_2\))。時間用「60 × 時 + 分」換算成「從午夜 0 點開始算的分鐘數」。(例:9:00 → \(T_1 = 540\),17:30 → \(T_2 = 1050\)) |
| \(B\) | 休息時間(分鐘)。取自英文 break(休息)的第一個字母。 |
| \(W\) | 以分鐘表示的一天實際工時(從上班到下班的時間扣掉休息,實際工作的時間)。取自英文 work(工作)的第一個字母。 |
| \(W_1, W_2, \ldots, W_7\) | 從星期一到星期日,每天的實際工時(分鐘)。右下角的小數字(下標)表示是一週中的第幾天。 |
| \(S\) | 以分鐘表示的每週實際工時合計(每天的實際工時全部加起來的值)。取自英文 sum(合計)的第一個字母。 |
| \(H\) | 把每週實際工時合計以「小時」為單位、用小數表示的十進位時數。用 \(H = S \div 60\) 求出。(例:2250 分 → 37.5 小時) |
| \(R\) | 時薪(元)。取自英文 rate(單價)的第一個字母。 |
| \(P\) | 薪資試算(元)。用 \(P = H \times R\) 求出。取自英文 pay(薪資)的第一個字母。 |
| \(1440\) | 一天的分鐘數,\(24 \times 60 = 1440\) 分。計算夜班跨日(下班在隔天)時要加上。 |
用語
| 打卡紀錄 | 用打卡鐘、出勤卡或打卡 App,每天記下上班、下班時間的紀錄。從打卡的時間統計出實際工時,作為計算薪資的依據。這個頁面會把一週份的統計(出勤紀錄統計)一次做完。 |
| 出勤紀錄 | 上班、下班、休息、缺勤等上班狀況的紀錄。「出勤紀錄統計」是指從記下的時間統計出實際工時等數字的工作。 |
| 實際工時 | 從上班到下班的時間扣掉休息時間後,實際工作的時間。按時計酬的打工,計算薪水的通常就是這個實際工時(依勞動基準法,休息時間不算在工作時間內)。 |
| 十進位時數 | 把「37 小時 30 分」寫成「37.5 小時」這樣,用小數表示的時數。因為是把分除以 60 換成小數,所以可以直接用在「時薪 × 時數」的乘法。請注意「37 小時 30 分」並不等於「37.3 小時」。 |
| 跨日 | 像夜班那樣,上班途中日期改變。下班時間的數字會比上班時間小,所以要加上一天的 1440 分來計算。 |
| 加班費 | 在正常工時以外工作(延長工時)時,以比平常時薪更高的比率支付的工資。在台灣,依勞動基準法第 24 條,平日延長工時的前 2 小時每小時至少加給平日時薪的 1/3,再延長的 2 小時以內至少加給 2/3;休息日出勤另有更高的倍率。這個計算機不處理加班費,只計算不加成的「實際工時合計 × 時薪」。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到卡關時,回頭複習這個表格的內容是最快的方法。
| 時刻與時間(國小,7~9 歲) |
|
| 上午、下午與 24 小時制(國小,7~9 歲) |
|
| 退位減法、有餘數的除法(國小,7~9 歲) |
|
| 小數與乘法(國小,8~11 歲) |
|
用 Excel 計算的方法
| 星期 | 上班 | 下班 | 休息(分) | 實際工時(分) |
| 一 | 9:00 | 17:30 | 60 | =IF(OR(B2="",C2=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C2),C2)-IFERROR(TIMEVALUE(B2),B2),1)*1440,0)-D2) |
| 二 | 9:00 | 17:30 | 60 | =IF(OR(B3="",C3=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C3),C3)-IFERROR(TIMEVALUE(B3),B3),1)*1440,0)-D3) |
| 三 | 9:00 | 17:30 | 60 | =IF(OR(B4="",C4=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C4),C4)-IFERROR(TIMEVALUE(B4),B4),1)*1440,0)-D4) |
| 四 | 9:00 | 17:30 | 60 | =IF(OR(B5="",C5=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C5),C5)-IFERROR(TIMEVALUE(B5),B5),1)*1440,0)-D5) |
| 五 | 9:00 | 17:30 | 60 | =IF(OR(B6="",C6=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C6),C6)-IFERROR(TIMEVALUE(B6),B6),1)*1440,0)-D6) |
| 六 | 0 | =IF(OR(B7="",C7=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C7),C7)-IFERROR(TIMEVALUE(B7),B7),1)*1440,0)-D7) | ||
| 日 | 0 | =IF(OR(B8="",C8=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C8),C8)-IFERROR(TIMEVALUE(B8),B8),1)*1440,0)-D8) | ||
| 每週合計(分) | =SUM(E2:E8) |
| 每週實際工時合計(分) | 2250 |
| 每週合計:小時 | =QUOTIENT(B1,60) |
| 每週合計:分 | =MOD(B1,60) |
| 十進位時數 | =ROUND(B1/60,2) |
| 時薪(元) | 200 |
| 薪資試算(元) | =ROUND(B1/60*B5,0) |
第 2 個表格在 B1 填入每週實際工時合計(分鐘),B2、B3 會用 QUOTIENT(除法的商)和 MOD(除法的餘數)算出「37 小時 30 分」的明細,B4 是十進位時數(37.5。除不盡時用 ROUND 四捨五入到小數第 2 位)。在 B5 填入時薪,B6 就會出現薪資試算(這個例子是 7,500 元。不到 1 元的部分四捨五入)。只要把 B 欄改成自己的數值就能使用。
用 Google 試算表計算的方法
| 星期 | 上班 | 下班 | 休息(分) | 實際工時(分) |
| 一 | 9:00 | 17:30 | 60 | =IF(OR(B2="",C2=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C2),C2)-IFERROR(TIMEVALUE(B2),B2),1)*1440,0)-D2) |
| 二 | 9:00 | 17:30 | 60 | =IF(OR(B3="",C3=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C3),C3)-IFERROR(TIMEVALUE(B3),B3),1)*1440,0)-D3) |
| 三 | 9:00 | 17:30 | 60 | =IF(OR(B4="",C4=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C4),C4)-IFERROR(TIMEVALUE(B4),B4),1)*1440,0)-D4) |
| 四 | 9:00 | 17:30 | 60 | =IF(OR(B5="",C5=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C5),C5)-IFERROR(TIMEVALUE(B5),B5),1)*1440,0)-D5) |
| 五 | 9:00 | 17:30 | 60 | =IF(OR(B6="",C6=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C6),C6)-IFERROR(TIMEVALUE(B6),B6),1)*1440,0)-D6) |
| 六 | 0 | =IF(OR(B7="",C7=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C7),C7)-IFERROR(TIMEVALUE(B7),B7),1)*1440,0)-D7) | ||
| 日 | 0 | =IF(OR(B8="",C8=""),"",ROUND(MOD(IFERROR(TIMEVALUE(C8),C8)-IFERROR(TIMEVALUE(B8),B8),1)*1440,0)-D8) | ||
| 每週合計(分) | =SUM(E2:E8) |
| 每週實際工時合計(分) | 2250 |
| 每週合計:小時 | =QUOTIENT(B1,60) |
| 每週合計:分 | =MOD(B1,60) |
| 十進位時數 | =ROUND(B1/60,2) |
| 時薪(元) | 200 |
| 薪資試算(元) | =ROUND(B1/60*B5,0) |
用 Python 計算的方法
# 每週打卡紀錄(只寫有上班的日子,格式為 (星期, 上班, 下班, 休息分鐘數))
week = [
("星期一", "9:00", "17:30", 60),
("星期二", "9:00", "17:30", 60),
("星期三", "9:00", "17:30", 60),
("星期四", "9:00", "17:30", 60),
("星期五", "9:00", "17:30", 60),
]
hourly_wage = 200 # 時薪(元)。不計算薪資時設為 None
def to_minutes(time_text):
# 把 "9:00" 或 "17:30"(只有時的 "9" 也可以)換算成從 0 點開始算的分鐘數
parts = time_text.split(":")
hour = int(parts[0])
minute = int(parts[1]) if len(parts) > 1 else 0
return hour * 60 + minute
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} 分"
total_work = 0
for day_name, clock_in, clock_out, rest_minutes in week:
elapsed = to_minutes(clock_out) - to_minutes(clock_in)
if elapsed < 0:
# 下班比上班早 -> 視為隔天下班(夜班跨日),加上一天
elapsed += 1440
work = elapsed - rest_minutes
total_work += work
print(f"{day_name}: {format_minutes(work)}")
decimal_hours = round(total_work / 60, 2) # 十進位時數(算時薪用)
print(f"每週合計: {format_minutes(total_work)}({decimal_hours} 小時,{len(week)} 天)")
if hourly_wage is not None:
pay = round(total_work * hourly_wage / 60, 0) # 薪資試算(不到 1 元四捨五入)
print(f"薪資試算: NT${pay:,.0f}")
用 LaTeX 等數學式語言的寫法(可直接複製)
W = T₂ − T₁ − B (T₂ ≥ T₁), W = T₂ − T₁ + 1440 − B (T₂ < T₁)
W = T_2 - T_1 - B \quad (T_2 \ge T_1), \qquad W = T_2 - T_1 + 1440 - B \quad (T_2 < T_1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>W</mi><mo>=</mo>
<msub><mi>T</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>T</mi><mn>1</mn></msub><mo>−</mo>
<mi>B</mi>
<mo>,</mo><mspace width="0.7em"/>
<mi>W</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><mo>−</mo>
<mi>B</mi>
</mrow>
</math>
W = T_2 - T_1 - B, W = T_2 - T_1 + 1440 - B
workMinutes = If[t2 >= t1, t2 - t1, t2 - t1 + 1440] - b
W := `if`(t2 >= t1, t2 - t1, t2 - t1 + 1440) - b;
if t2 >= t1, W = t2 - t1 - b; else, W = t2 - t1 + 1440 - b; end
W = T_2 - T_1 - B (T_2 ≥ T_1), W = T_2 - T_1 + 1440 - B (T_2 < T_1)
S = W₁ + W₂ + ⋯ + W₇, H = S ÷ 60
S = W_1 + W_2 + \cdots + W_7, \quad H = \dfrac{S}{60}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>S</mi><mo>=</mo>
<msub><mi>W</mi><mn>1</mn></msub><mo>+</mo>
<msub><mi>W</mi><mn>2</mn></msub><mo>+</mo>
<mo>⋯</mo><mo>+</mo>
<msub><mi>W</mi><mn>7</mn></msub>
<mo>,</mo><mspace width="0.7em"/>
<mi>H</mi><mo>=</mo>
<mfrac><mi>S</mi><mn>60</mn></mfrac>
</mrow>
</math>
S = W_1 + W_2 + cdots + W_7, H = S / 60
totalMinutes = Total[workMinutes]; decimalHours = totalMinutes / 60
S := add(w[i], i = 1 .. 7); H := S / 60;
S = sum(W); H = S / 60;
S = W_1 + W_2 + ⋯ + W_7, H = S / 60
P = H × R
P = H \times R
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>P</mi><mo>=</mo>
<mi>H</mi><mo>×</mo><mi>R</mi>
</mrow>
</math>
P = H xx R
pay = decimalHours * hourlyWage
P := H * R;
P = H * R;
P = H × R
請 ChatGPT 幫忙計算的方法
你是工時統計助理。請務必實際執行 Python 程式碼來進行下面的計算,並且只根據執行結果的數值回答(不要用心算或推測回答)。 這是一週的打卡紀錄。時間全部是 24 小時制,休息以分鐘為單位。 ‧星期一~星期五:上班 9:00,下班 17:30,休息 60 分鐘 ‧星期六、星期日:沒有上班 時薪是 200 元。 請分別求出下面的值。 1. 每天的實際工時(每天都以「○小時○分」的形式) 2. 每週實際工時合計(「○小時○分」的形式)和上班天數 3. 每週合計的十進位時數(實際工時合計的分鐘數除以 60 得到的小數時數) 4. 薪資試算(十進位時數 × 時薪。不到 1 元四捨五入。不考慮加班費等加成) 每天的實際工時用「(下班換算成分鐘的值)−(上班換算成分鐘的值)− 休息」求出;如果有哪一天下班時間比上班時間早,請視為隔天下班(跨日),加上 1440 分鐘。 請列出計算用的公式和執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權