"Còn bao nhiêu ngày nữa là hết năm?" có hai câu trả lời đúng, và người ta hay tranh cãi xem câu nào mới đúng. Tính toán ngày tháng trông rất đơn giản cho đến khi bạn cần nó cho một hợp đồng, một đơn xin nghỉ phép, một cam kết giao hàng hay một tuần tính lương; lúc đó, những quy tắc nhỏ sẽ quyết định kết quả. Bài này giải thích các quy tắc đó qua ví dụ trong năm 2026. Mọi con số được tính bằng chính logic của công cụ tính ngày, và số ngày được kiểm tra lại bằng cách duyệt từng ngày trong khoảng bằng Python.
Số ngày giữa hai ngày: đếm một đầu hay cả hai?
Từ 13/10/2026 đến 31/12/2026 có 79 ngày. Đó là khoảng cách, giống như khi ta nói giữa thứ Hai và thứ Ba có 1 ngày: không tính ngày bắt đầu, có tính ngày kết thúc.
Nếu đếm cả hai ngày, tức cả ngày 13 và ngày 31, thì có 80 ngày. Đó là cách đếm khi mỗi ngày đều "được dùng": ở khách sạn từ mùng 1 đến mùng 3 thì trả phòng ngày mùng 3 (2 đêm), nhưng một hội nghị từ mùng 1 đến mùng 3 kéo dài 3 ngày.
Không câu trả lời nào sai; chúng trả lời hai câu hỏi khác nhau. Phần lớn tranh cãi "lệch một ngày" đến từ việc trộn lẫn hai cách. Trước khi đếm, hãy quyết định có tính ngày đầu và ngày cuối không, ghi rõ nếu đưa vào hợp đồng, rồi mới đếm. Công cụ mặc định đếm một đầu và có ô "Tính cả ngày kết thúc" cho cách còn lại.
79 ngày cũng là 11 tuần và 2 ngày, hay 2 tháng và 18 ngày (từ 13/10 đến 13/12 là hai tháng, thêm 18 ngày nữa đến 31/12).
Cộng ngày, tuần, tháng và năm
Cộng ngày không có gì mơ hồ: 100 ngày sau 13/10/2026 là thứ Năm, 21/1/2027. Tuần là 7 ngày nên cũng an toàn như vậy.
Tháng thì khác, vì tháng có từ 28 đến 31 ngày. Quy tắc thông dụng, được dùng trong bảng tính (hàm EDATE), hầu hết ngôn ngữ lập trình và ngân hàng:
Khi tháng đích không có ngày đó, lấy ngày cuối cùng của tháng.
Vì vậy 31/1/2026 cộng một tháng là 28/2/2026, và công cụ sẽ báo là kết quả đã được điều chỉnh. Ở năm nhuận thì là 29/2. Phép trừ cũng vậy: 31/5 trừ ba tháng là 28/2.
Có hai hệ quả khiến nhiều người bất ngờ:
- Một tháng không phải 30 ngày. 31/1 cộng 30 ngày là 2/3/2026, còn 31/1 cộng một tháng là 28/2. Hợp đồng ghi "30 ngày" thì đếm ngày; ghi "một tháng" thì đếm tháng.
- Đừng cộng tháng nối tiếp. 31/1 + 1 tháng = 28/2, và 28/2 + 1 tháng = 28/3. Nhưng 31/1 + 2 tháng là 31/3. Khi lập lịch (trả góp hằng tháng, gia hạn thuê bao), hãy tính mỗi mốc từ ngày bắt đầu gốc.
Năm cũng theo quy tắc đó: 29/2/2024 cộng một năm là 28/2/2025, còn cộng bốn năm là 29/2/2028.
Ngày làm việc
Đếm ngày làm việc cần ba thứ: hai ngày đầu cuối, những ngày nghỉ hằng tuần, và danh sách ngày lễ.
Công cụ đếm cả hai đầu, giống hàm NETWORKDAYS trong Excel và Google Sheets, vì khi hỏi "từ thứ Hai đến thứ Sáu có mấy ngày làm việc?" thì ai cũng chờ câu trả lời là 5, không phải 4. Nếu ngày kết thúc nằm trước ngày bắt đầu, kết quả là số âm, cũng giống NETWORKDAYS.
Ví dụ với tháng 9/2026, bắt đầu vào thứ Ba:
| Thiết lập | Ngày làm việc |
|---|---|
| Nghỉ thứ Bảy và Chủ nhật, không có ngày lễ | 22 |
| Nghỉ thứ Bảy và Chủ nhật, nghỉ thêm 1 và 2/9 | 20 |
| Chỉ nghỉ Chủ nhật, nghỉ thêm 1 và 2/9 | 24 |
Tháng có 30 ngày, trong đó 8 ngày cuối tuần nếu nghỉ thứ Bảy và Chủ nhật. Hai ngày lễ rơi vào ngày thường đưa con số từ 22 xuống 20. Nếu chỉ nghỉ Chủ nhật thì chỉ có 4 Chủ nhật, còn 26 ngày làm việc, trừ hai ngày lễ là 24.
Cả năm 2026, nghỉ thứ Bảy và Chủ nhật, không tính ngày lễ, có 261 ngày làm việc: 365 ngày trừ 104 ngày cuối tuần.
Vài quy tắc thực tế:
- Ngày lễ trùng ngày nghỉ không bị trừ hai lần. Danh sách có một ngày Chủ nhật thì cũng không làm thay đổi kết quả.
- Ngày lễ thay đổi theo từng năm. Các ngày lễ âm lịch như Tết dịch chuyển theo mặt trăng, và Nhà nước đôi khi hoán đổi ngày làm việc để có kỳ nghỉ dài hơn. Hãy dán danh sách chính thức của năm cần tính, đừng dùng lại danh sách năm ngoái.
- Ngày nghỉ cuối tuần tùy nơi làm việc. Nhiều văn phòng ở Việt Nam làm sáng thứ Bảy; ở một số nước Trung Đông, cuối tuần là thứ Sáu và thứ Bảy. Hãy chọn đúng theo hợp đồng hoặc quy định của công ty.
Trong công cụ, bạn nhập mỗi dòng một ngày lễ dạng 2026-09-02; mọi thứ ghi sau ngày, như tên ngày lễ, đều được bỏ qua. Dạng ngày trước tháng sau như 02/09/2026 bị từ chối có chủ ý, vì ở Việt Nam đó là 2 tháng 9 còn ở Mỹ là 9 tháng 2. Các dòng bị từ chối được liệt kê theo số dòng để không có gì bị bỏ qua một cách âm thầm.
Số tuần ISO
Số tuần nghe đơn giản cho đến dịp năm mới. Chuẩn quốc tế ISO 8601 quy định:
- tuần bắt đầu từ thứ Hai;
- tuần 1 là tuần chứa ngày thứ Năm đầu tiên của năm (tương đương: tuần chứa ngày 4/1).
Vì vậy những ngày đầu và cuối năm đôi khi thuộc về năm bên cạnh:
| Ngày | Thứ | Ngày theo tuần ISO |
|---|---|---|
| 3/1/2021 | Chủ nhật | 2020-W53-7 |
| 30/12/2024 | Thứ Hai | 2025-W01-1 |
| 13/10/2026 | Thứ Ba | 2026-W42-2 |
| 31/12/2026 | Thứ Năm | 2026-W53-4 |
| 1/1/2027 | Thứ Sáu | 2026-W53-5 |
Chữ số cuối là thứ trong tuần, từ 1 (thứ Hai) đến 7 (Chủ nhật). Một năm có 53 tuần ISO khi bắt đầu vào thứ Năm, hoặc vào thứ Tư nếu là năm nhuận; 2020 và 2026 là những năm như vậy. Nếu nhà cung cấp hẹn "giao hàng tuần 1 năm 2025", tuần đó bắt đầu từ thứ Hai 30/12/2024.
Cũng có những cách đánh số khác. Ở Mỹ, tuần thường được đếm từ Chủ nhật và ngày 1/1 luôn thuộc tuần 1, nên quanh dịp năm mới hai cách có thể lệch nhau một tuần. Khi ghi số tuần vào đơn hàng hay bảng chấm công, hãy ghi rõ "tuần ISO" để tránh hiểu nhầm.
Những lỗi thường gặp
- Không thống nhất đếm một đầu hay hai đầu. 79 và 80 ngày đều đúng; hãy chọn có chủ ý.
- Coi một tháng là 30 ngày. Cộng một tháng và cộng 30 ngày cho ra ngày khác nhau với hầu hết các ngày bắt đầu.
- Cộng tháng nối tiếp. Hãy tính mọi mốc trong lịch từ ngày bắt đầu gốc.
- Quên rằng ngày lễ dịch chuyển. Danh sách năm ngoái sẽ sai với mọi ngày lễ âm lịch năm nay.
- Gõ ngày dạng ngày/tháng vào công cụ tự đoán. 03/04 là 3 tháng 4 hay 4 tháng 3 tùy người đọc. Hãy dùng YYYY-MM-DD.
- Tự lập trình bằng mốc thời gian nửa đêm giờ địa phương. Trừ hai đối tượng
Datecủa JavaScript lấy lúc nửa đêm rồi chia cho 86.400.000 sẽ sai qua ngày đổi giờ, khi một ngày dài 23 hoặc 25 giờ. Hãy làm việc với ngày theo lịch thuần.
Thử ngay
Công cụ tính ngày có một thẻ cho mỗi việc trên: số ngày giữa hai ngày, cộng hoặc trừ, ngày làm việc với danh sách ngày lễ của bạn, và tuần cùng thứ. Muốn tính tuổi chính xác theo năm, tháng, ngày, hãy dùng công cụ tính tuổi; để hẹn họp giữa các nước, dùng công cụ đổi múi giờ.