Chuyển đến nội dung chính

Tính Khoảng Cách Ngày miễn phí

Tính khoảng cách chính xác giữa hai ngày — năm, tháng, ngày, tuần, ngày làm việc (không tính cuối tuần), giờ và phút.

Hoạt động ngoại tuyến sau khi tải

Cấu hình nhanh

Chọn cả hai ngày để xem sự khác biệt.

Công dụng phổ biến

  • Tính Toán Ngày Cho Đến Ngày Hết HạnĐếm ngược đến ngày dự kiến sinh của em bé: tìm hiểu chính xác bao nhiêu tuần, ngày và giờ cho đến ngày lớn.
  • Ngày Cho Đến Kỳ Nghỉ Của BạnĐếm ngược đến chuyến đi của bạn với những ngày làm việc, tổng ngày và tuần còn lại cho mục đích lập kế hoạch.
  • Ngày Làm Việc Cho Đến Thời Hạn Dự ÁnTính toán số ngày làm việc chính xác (không bao gồm các ngày cuối tuần) giữa hôm nay và thời hạn của dự án.
  • Tính Toán Ngày Kỷ Niệm Cùng NhauTìm hiểu chính xác bao nhiêu ngày, tháng và năm bạn đã ở bên cạnh người nào đó đặc biệt.
  • Máy Tính Chênh Lệch Độ Tuổi Giữa Hai NgườiTính toán chênh lệch tuổi chính xác giữa hai ngày sinh: năm, tháng và ngày cách nhau.

Cách hoạt động

Mọi phép tính chạy hoàn toàn trong trình duyệt bằng phép tính UTC tự viết — không thư viện bên ngoài, không yêu cầu máy chủ. Công cụ phân tích chuỗi YYYY-MM-DD thành các thành phần lịch, tính chênh lệch bằng mốc mili giây Date.UTC() để tránh sai lệch giờ mùa hè, và lặp từng ngày để đếm ngày làm việc từ thứ Hai đến thứ Sáu.

  1. 1
    Phân tích ngày an toàn
    Mỗi chuỗi ngày được kiểm tra bằng regex rồi dựng lại qua Date.UTC() — không phải new Date(string) — để người dùng ở phía tây UTC không bao giờ thấy thứ bị lệch do trình duyệt diễn giải đầu vào chỉ có ngày theo múi giờ địa phương.
  2. 2
    Phép trừ mili giây UTC
    Hai ngày lịch được chuyển thành mốc nửa đêm UTC bằng Date.UTC(y, m, d). Chia nguyên cho 86.400.000 ms cho số ngày nguyên chính xác, không bị ảnh hưởng bởi chuyển đổi giờ mùa hè vốn có thể khiến một ngày dài 23 hoặc 25 giờ.
  3. 3
    Phân tích lịch và đếm ngày làm việc
    Phép phân tách năm/tháng/ngày tự viết xử lý sự không đều của độ dài tháng (mượn ngày từ tháng trước khi cần). Một vòng lặp riêng đi qua từng ngày UTC giữa hai ngày và chỉ tăng bộ đếm cho thứ Hai–thứ Sáu (getUTCDay() !== 0 hoặc 6), cho tổng số ngày làm việc chính xác bất kể ngôn ngữ.
  4. 4
    Kết quả hiển thị ở mọi đơn vị
    Các tổng được định dạng bằng toLocaleString() theo ngôn ngữ của trang để nhóm chữ số phù hợp, rồi hiển thị đồng thời dưới dạng năm/tháng/ngày, tổng số ngày, ngày làm việc, tuần, giờ và phút. Cặp ngày hiện tại được ghi vào URL qua history.replaceState để mọi kết quả có thể được đánh dấu hoặc chia sẻ dưới dạng liên kết trực tiếp.

Công cụ liên quan

Câu hỏi thường gặp