Định dạng số giây thành HH:MM:SS sử dụng JavaScript

Khi làm việc với các ứng dụng liên quan đến thời gian như đồng hồ đếm ngược, trình phát video, hoặc thống kê thời lượng, bạn thường cần chuyển đổi một giá trị số giây (ví dụ: 17999) sang định dạng thời gian dễ đọc như 04:59:59.

Định dạng số giây thành HH:MM:SS sử dụng JavaScript

Bài viết này chia sẻ một hàm JavaScript đơn giản giúp bạn thực hiện việc đó.

Hàm chuyển đổi từ giây sang HH:MM:SS

function convertHMS(value) {
    const sec = parseInt(value, 10);
    let hours   = Math.floor(sec / 3600);
    let minutes = Math.floor((sec - (hours * 3600)) / 60);
    let seconds = sec - (hours * 3600) - (minutes * 60);

    if (hours   < 10) { hours   = "0" + hours; }
    if (minutes < 10) { minutes = "0" + minutes; }
    if (seconds < 10) { seconds = "0" + seconds; }

    return hours + ':' + minutes + ':' + seconds;
}

Ví dụ sử dụng:

console.log(convertHMS(17999)); // Kết quả: "04:59:59"

Lưu ý và mở rộng

  • Hàm xử lý tốt các giá trị từ 0 trở lên. Nếu có thể nhập số âm, nên thêm điều kiện kiểm tra đầu vào.
  • Nếu chỉ cần định dạng MM:SS (ví dụ cho video ngắn), có thể bỏ phần giờ.
  • Thích hợp dùng cho trình phát audio, video, thời gian làm bài, đếm thời gian online, v.v.

Gợi ý viết gọn hơn với ES6 (tuỳ chọn)

Bạn cũng có thể viết lại hàm trên bằng cú pháp hiện đại của ES6:

const convertHMS = (value) => {
    const sec = parseInt(value, 10);
    const h = String(Math.floor(sec / 3600)).padStart(2, '0');
    const m = String(Math.floor((sec % 3600) / 60)).padStart(2, '0');
    const s = String(sec % 60).padStart(2, '0');
    return `${h}:${m}:${s}`;
};

Kết luận

Chỉ với vài dòng code đơn giản, bạn đã có thể xử lý định dạng thời gian cực kỳ hữu ích trong nhiều trường hợp thực tế. Hãy lưu lại hàm này vào thư viện tiện ích cá nhân của bạn để tái sử dụng bất cứ khi nào cần hiển thị thời lượng một cách thân thiện với người dùng.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...