我想将持续时间(即秒数)转换为以冒号分隔的时间字符串 (hh:mm:ss)
我在这里找到了一些有用的答案,但他们都在谈论转换为 x 小时和 x 分钟格式。
那么是否有一个小片段可以在 jQuery 或原始 JavaScript 中执行此操作?
我想将持续时间(即秒数)转换为以冒号分隔的时间字符串 (hh:mm:ss)
我在这里找到了一些有用的答案,但他们都在谈论转换为 x 小时和 x 分钟格式。
那么是否有一个小片段可以在 jQuery 或原始 JavaScript 中执行此操作?
String.prototype.toHHMMSS = function () {
var sec_num = parseInt(this, 10); // don't forget the second param
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (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;
}
您现在可以像这样使用它:
alert("5678".toHHMMSS());
工作片段:
借助 JS Date 方法,您可以在没有任何外部 JS 库的情况下设法做到这一点,如下所示:
var date = new Date(0);
date.setSeconds(45); // specify value for SECONDS here
var timeString = date.toISOString().substr(11, 8);
console.log(timeString)
要获取格式中的时间部分hh:MM:ss
,您可以使用以下正则表达式:
(这在上面有人在同一篇文章中提到过,谢谢。)
var myDate = new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
console.log(myDate)
我推荐使用 Date 对象的普通 javascript。(对于更短的解决方案,使用toTimeString
,请参阅第二个代码片段。)
var seconds = 9999;
// multiply by 1000 because Date() requires miliseconds
var date = new Date(seconds * 1000);
var hh = date.getUTCHours();
var mm = date.getUTCMinutes();
var ss = date.getSeconds();
// If you were building a timestamp instead of a duration, you would uncomment the following line to get 12-hour (not 24) time
// if (hh > 12) {hh = hh % 12;}
// These lines ensure you have two-digits
if (hh < 10) {hh = "0"+hh;}
if (mm < 10) {mm = "0"+mm;}
if (ss < 10) {ss = "0"+ss;}
// This formats your string to HH:MM:SS
var t = hh+":"+mm+":"+ss;
document.write(t);
(当然,创建的 Date 对象将有一个与之关联的实际日期,但该数据是无关紧要的,因此出于这些目的,您不必担心。)
利用该toTimeString
函数并在空白处拆分:
var seconds = 9999; // Some arbitrary value
var date = new Date(seconds * 1000); // multiply by 1000 because Date() requires miliseconds
var timeStr = date.toTimeString().split(' ')[0];
toTimeString
给出'16:54:58 GMT-0800 (PST)'
,并在第一个空格上拆分给出'16:54:58'
。
谷歌搜索结果如下:
function secondsToTime(secs)
{
secs = Math.round(secs);
var hours = Math.floor(secs / (60 * 60));
var divisor_for_minutes = secs % (60 * 60);
var minutes = Math.floor(divisor_for_minutes / 60);
var divisor_for_seconds = divisor_for_minutes % 60;
var seconds = Math.ceil(divisor_for_seconds);
var obj = {
"h": hours,
"m": minutes,
"s": seconds
};
return obj;
}