我有来自数据库的数据和视频持续时间的格式 00:05:20并希望它转换为5分20秒。
如果不存在小时,则不应该像0小时一样,只应该是5分20秒。
有moment.js但不想使用任何插件。
如何使用javascript或jQuery实现这一目标?
答案 0 :(得分:4)
尝试:
function timeString(time){
var timeExtract = /(\d+):(\d+):(\d+)/g.exec(time);
var totalSeconds = +timeExtract[1] * 3600 + +timeExtract[2] * 60 + +timeExtract[3];
var result = [
["hour", totalSeconds/3600],
["minute", totalSeconds/60],
["second", totalSeconds]
];
return result.map(function(timer){
var str = timer[0], value = timer[1] | 0, left = value % 60;
return value > 0 ? value > 1 ? left + " " + str + "s" : left + " " + str : ""
}).join(" ")
}
document.write(timeString("00:00:20") + "<br>")
document.write(timeString("00:05:20") + "<br>")
document.write(timeString("01:05:20") + "<br>")
&#13;
答案 1 :(得分:1)
此功能可以帮助您:
function stringify (time) {
var result = '';
var date = time.split(':').map(Number);
result += date[0] ? (date[0] + ' hours ') : ('');
result += date[1] ? (date[1] + ' miutes ') : ('');
result += date[2] ? (date[2] + ' seconds ') : ('');
return result;
}
stringify('00:05:20'); // "5 miutes 20 seconds "
stringify('03:05:20'); // "3 hours 5 miutes 20 seconds "
答案 2 :(得分:0)
也许你可以在secondes中转换你的时间并使用这个函数来做:
alert(secondsToHms("00:05:20"));
function secondsToHms(time) {
var timeExtract = /(\d+):(\d+):(\d+)/g.exec(time);
d = Number(timeExtract[1] * 3600 + timeExtract[2] * 60 + timeExtract[3]);
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
return ((h > 0 ? h + " hours " + (m < 10 ? "0" : "") : "") + m + " minutes " + (s < 10 ? "0" : "") + s); }
答案 3 :(得分:0)
你可以试试这个:
var time = "00:05:20";
var regex = /(\d{1,2}):(\d{1,2}):(\d{1,2})/g;
var timeString = time.replace(regex, "$1 Hours $2 Minutes $3 Seconds")
alert(timeString);
&#13;