Chuyển đổi mili giây sang phút và giây bằng Javascript
API của Soundcloud cung cấp thời lượng của các bài hát dưới dạng mili giây. JSON trông như sau:
"duration": 298999
Tôi đã thử nhiều hàm mà tôi tìm thấy ở đây nhưng không thành công. Tôi chỉ đang tìm một thứ gì đó để chuyển con số đó thành một thứ gì đó trông giống như thế này:
4:59
Đây là một cái gần đúng, nhưng không hoạt động. Nó không dừng giây lại ở 60. Nó chạy hết lên tới 99, điều này không hợp lý. Thử nhập "187810" làm giá trị của ms, ví dụ.
var ms = 298999,
min = Math.floor((ms/1000/60) << 0),
sec = Math.floor((ms/1000) % 60);
console.log(min + ':' + sec);
Cảm ơn vì sự giúp đỡ của bạn!
Nếu bạn có thể thêm hỗ trợ cho cả giờ, tôi sẽ rất biết ơn.
Câu trả lời #1
function millisToMinutesAndSeconds(millis) {
var minutes = Math.floor(millis / 60000);
var seconds = ((millis % 60000) / 1000).toFixed(0);
return minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
}
millisToMinutesAndSeconds(298999); // "4:59"
millisToMinutesAndSeconds(60999); // "1:01"
Như người dùng HelpingHand đã chỉ ra trong phần bình luận, câu lệnh return nên là:
return (
seconds == 60 ?
(minutes+1) + ":00" :
minutes + ":" + (seconds < 10 ? "0" : "") + seconds
);
Câu trả lời #2
Tôi thực sự không chắc tại sao tất cả những câu trả lời này đều phức tạp như vậy. Lớp Date cung cấp cho bạn những gì bạn cần:
const date = new Date(298999);
alert(`${date.getMinutes()}:${date.getSeconds()}`);Mặc dù những điều trên đáp ứng yêu cầu của op, nhưng tôi thêm phiên bản cập nhật này để phản hồi bình luận của @ianstarz về việc độc lập với múi giờ:
const d = new Date(Date.UTC(0,0,0,0,0,0,298999)),
// Pull out parts of interest
parts = [
d.getUTCHours(),
d.getUTCMinutes(),
d.getUTCSeconds()
],
// Zero-pad
formatted = parts.map(s => String(s).padStart(2,'0')).join(':');
document.write(formatted);Câu trả lời #3
Với giờ, thêm số 0 vào phút và giây:
var ms = 298999;
var d = new Date(1000*Math.round(ms/1000)); // round to nearest second
function pad(i) { return ('0'+i).slice(-2); }
var str = d.getUTCHours() + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());
console.log(str); // 0:04:59
