Tất cả bài viết

Chênh lệch ngày: vì sao đếm số ngày phức tạp hơn tưởng tượng

"05/03/2024" nghĩa là ngày 5 tháng 3 ở Việt Nam, nhưng lại là ngày 3 tháng 5 ở Mỹ. Chỉ riêng khác biệt về quy ước viết ngày này đã gây ra nhiều lỗi tính chênh lệch ngày trong thực tế hơn cả năm nhuận và múi giờ cộng lại, vì ngày bị "đọc sai" vẫn trông hoàn toàn hợp lệ.

DD/MM/YYYY và MM/DD/YYYY

Ở Việt Nam, ngày được viết trước: 05/03/2024 là ngày 5 tháng 3. Ở Mỹ, tháng được viết trước — cùng một chuỗi đó lại có nghĩa là ngày 3 tháng 5. Nếu một ngày lấy từ API hoặc bảng tính của Mỹ bị đọc theo quy ước Việt Nam, chênh lệch ngày tính ra có thể sai hàng tuần mà không hề có lỗi code nào xuất hiện.

Định dạng không mơ hồ: ISO 8601

Cách viết 2024-03-05 (năm-tháng-ngày) được đọc giống nhau ở bất kỳ quốc gia nào, đó là lý do nó là chuẩn trong API, cơ sở dữ liệu và log hệ thống. Khi có thể chọn định dạng lúc trao đổi ngày tháng giữa các hệ thống, ISO 8601 loại bỏ vấn đề này vĩnh viễn.

Múi giờ và ranh giới ngày

Nếu ngày tháng bao gồm cả giờ chứ không chỉ ngày, chênh lệch múi giờ có thể làm dịch chuyển kết quả đếm ngày đi một đơn vị: 23:30 ở Hà Nội và 17:30 cùng thời điểm ở Paris có thể rơi vào các ngày lịch khác nhau tùy vào múi giờ dùng để đếm.

Vì sao cần điều này

  • Tính số ngày chính xác đến hạn chót hoặc kể từ ngày bắt đầu dự án.
  • Kiểm tra xem hợp đồng thuê, gói đăng ký hay bảo hành có còn hiệu lực không.
  • Phát hiện một ngày bị đọc sai định dạng trước khi nó làm hỏng cả báo cáo.

Vì sao "chênh lệch theo tháng" không có một đáp án đúng duy nhất

Trừ một tháng từ ngày 31 tháng 3 cho kết quả mơ hồ — không tồn tại ngày 31 tháng 2, nên một số hệ thống làm tròn về 28 tháng 2, số khác chuyển những ngày dư sang 3 tháng 3. Cả hai cách đều hợp lý nhưng không thống nhất — điều đáng nhớ khi kết quả không khớp với công cụ khác.

Dùng thử công cụ