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