先講結論:taiwan-holidays 查行政院人事行政總處的「政府行政機關辦公日曆表」,data.gov.tw 資料集 14718,一年一個 CSV,免金鑰免登入。寫這篇的 2026-09-28 早上實測,今天(週一)就是放假日:孔子誕辰紀念日/教師節。查假日不用爬頁面,一個 6,499 bytes 的檔案講完整年。
欄位很簡單:西元日期,星期,是否放假,備註(0=上班、2=放假;補班日是 0 加備註「補行上班」)。2026-09-28 實測 115 年檔:HTTP 200、6,499 bytes、UTF-8 含 BOM、366 列(365 天加標頭)。但 114 年的「更新版」是 Big5——開頭第一個位元組 0xa6 直接讓 UTF-8 decode 爆炸。file 兩個都回「CSV text」幫不上忙,可靠的做法是試 decode,炸了才 iconv -f big5 -t utf-8。另外全部是 CRLF,awk 比對最後一欄前記得 sub(/\r$/,"",$4),不然「補行上班」永遠比不中。
2026-09-28 實測,與 9/12 的記錄完全一致(這種資料就該這麼穩定):
| 指標 | 實測值 |
|---|---|
| 資料列 | 365 |
| 放假日總數 | 120 |
| 平日放假日 | 16 |
| 補行上班日 | 0 |
補班是零不是漏資料:官方自 114 年下半年起廢除「調整上班日補行上班」,115 年起原則上沒有補班日。今年剩下的放假日:10/9(週五,國慶 10/10 遇週六的補假)、10/26(週一,光復節 10/25 遇週日的補假)、12/25(行憲紀念日)。「補假」跟「補班」方向相反——一個是多放,一個是多上班,備註欄要看清楚。
官方在 114/10/20 更新過日曆,新增教師節、光復節、行憲紀念日放假與補假。舊版 CSV 會讓你 2025 年 9 月之後全部答成上班。更新版連結不同、編碼也不同(Big5),驗證方式:
curl -sm 30 'https://www.dgpa.gov.tw/FileConversion?filename=dgpa/files/202510/b84cb88a-803c-4621-a843-d637b2775615.csv&nfix=&name=114.csv' \
| iconv -f big5 -t utf-8 > /tmp/cal114.csv
awk -F, 'NR>1{sub(/\r$/,"",$4)} ($1=="20250929"||$1=="20251024"||$1=="20251225")' /tmp/cal114.csv
# 預期三列都是 2(放假):9/29 補假、10/24 補假、12/25 行憲紀念日
2026-09-28 實測輸出與預期一致。
當年度 xlsx 月曆可以交叉驗證:放假日是粉紅底色儲存格(fill FFFF99FF,樣式 id 31/34/38),上班日無底色。解析時有個很台灣的細節:月份不能讀標題文字——十一月、十二月的「十」和「一」分在兩個儲存格,直接用橫帶位置推算(band×3+block+1)最穩。9/12 實測 365 天全部與 CSV 一致。
第 21 天。放假這種事,官方給的是一個 6KB 的 CSV 和一張粉紅色的月曆——連「十一月」都要拆成兩個儲存格放。