JavaScript 秒到时间字符串,格式为 hh:mm:ss
Posted
技术标签:
【中文标题】JavaScript 秒到时间字符串,格式为 hh:mm:ss【英文标题】:JavaScript seconds to time string with format hh:mm:ss 【发布时间】:2011-09-12 20:51:12 【问题描述】:我想将持续时间(即秒数)转换为以冒号分隔的时间字符串 (hh:mm:ss)
我在这里找到了一些有用的答案,但他们都在谈论转换为 x 小时和 x 分钟格式。
那么有没有一个小型的 sn-p 可以在 jQuery 或原始 javascript 中执行此操作?
【问题讨论】:
本主题中一些建议答案的基准。 jsperf.com/ms-to-hh-mm-ss-time-format Convert seconds to HH-MM-SS with JavaScript?的可能重复 【参考方案1】: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());
工作sn-p:
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;
console.log("5678".toHHMMSS());
【讨论】:
感谢原型的想法,我喜欢它更容易调用。我制作了 Number 的原型,所以我也可以在他们身上调用它。我还发现 this answer 会在不需要时删除小时和分钟。 使用 "%" 运算符 >> var minutes = Math.floor((sec_num % 3600) / 60); var seconds = Math.floor(sec_num % 60); 啊,谢谢。在您对整数调用 .toString() 之前,我认为它不会作为字符串以两种方式工作。你也可以通过解析 int 来让它工作 不要放在原型上,只做一个实用函数。 为这样的东西修改原型? 390 票?认真的吗?【参考方案2】:您可以在没有任何外部 JS 库的情况下借助 JS Date 方法来做到这一点,如下所示:
var date = new Date(0);
date.setSeconds(45); // specify value for SECONDS here
var timeString = date.toISOString().substr(11, 8);
console.log(timeString)
【讨论】:
这个答案为什么这么低?我在 2011 年得到它,可能 IE 7 和 8 是不支持它的基础,但它是 2014 年底,所以这个简单朴素、无忧无虑的解决方案应该更高。 我喜欢这个答案。它可以更短:new Date(1000 * seconds).toISOString().substr(11, 8)
.
不错的答案。您可以在substr
之后使用.replace(/^[0:]+/, "")
删除字符串开头的所有零和:
。
在前面加上这个来处理超过 24 小时的时间。 parseInt(d / 86400) + "d"
如果持续时间长于 23:59:59,则会中断。【参考方案3】:
要获取hh:MM:ss
格式的时间部分,您可以使用以下正则表达式:
(上面有人在同一篇文章中提到过,谢谢。)
var myDate = new Date().toTimeString().replace(/.*(\d2:\d2:\d2).*/, "$1");
console.log(myDate)
【讨论】:
+1 - 超级简单;谢谢!只是使用了一个变体来只显示分钟和秒:var myDate = new Date().toTimeString().replace(/.*(\d2:\d2)(:\d2).*/, "$1");
不应该是“new Date(null, null, null, null, null, timeInSecs).toTimeString().replace(/.*(\d2:)(\d 2:\d2).*/, "$2")" ?
replace
的使用令人困惑。为什么不使用new Date(null, null, null, null, null, timeInSeconds).toTimeString().match(/\d2:\d2:\d2/)[0]
?
这适用于显示给定时间,但请注意问题(以及此处的其他答案)是关于显示持续时间的,即与当前时间无关的给定秒数。
这个的简单版本:new Date().toTimeString().split(" ")[0]
【参考方案4】:
我推荐普通的 javascript,使用 Date 对象。 (更短的解决方案,使用toTimeString
,见第二个代码sn-p。)
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'
。
【讨论】:
它似乎在当地时区制作日期,在我的情况下,这增加了 1 小时的时间。秒 = 0,我得到“01:00:00”(1970 年 1 月 1 日星期四 01:00:00 GMT+0100 (CET)),这是错误的。 如果我使用date.getUTCHours()
和date.getUTCMinutes()
,我会得到正确的结果。
我不明白你为什么在他要求持续时间时返回 12 小时时间戳?
我喜欢这个,但它确实假设持续时间小于 24 小时
在前面添加 parseInt(d / 86400) + "d" 处理超过 24 小时的案例【参考方案5】:
Google 搜索出现了this result:
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;
【讨论】:
secondsToTime(119.9)
=> Object h: 0, m: 1, s: 60
。要解决此问题,请在方法的开头添加 secs = Math.round(secs);
。当然,我们在演示期间看到了这个错误......【参考方案6】:
这是我的看法:
function formatTime(seconds)
const h = Math.floor(seconds / 3600);
const m = Math.floor((seconds % 3600) / 60);
const s = Math.round(seconds % 60);
return [
h,
m > 9 ? m : (h ? '0' + m : m || '0'),
s > 9 ? s : '0' + s
].filter(Boolean).join(':');
预期结果:
const expect = require('expect');
expect(formatTime(0)).toEqual('0:00');
expect(formatTime(1)).toEqual('0:01');
expect(formatTime(599)).toEqual('9:59');
expect(formatTime(600)).toEqual('10:00');
expect(formatTime(3600)).toEqual('1:00:00');
expect(formatTime(360009)).toEqual('100:00:09');
expect(formatTime(0.2)).toEqual('0:00');
【讨论】:
你可以这样写:const formatTime = (seconds, h = Math.floor(seconds / 3600), m = Math.floor((seconds % 3600) / 60), s = seconds % 60) => [h, m > 9 ? m : '0' + m, s > 9 ? s : '0' + s].filter(s => s).join(':');
@RubenStolk 我发现有一个接受两个second
参数的函数有点令人困惑。我发现我的版本更清晰,即使它有点冗长。
@pstanton 尾随逗号从 IE9 开始受支持:caniuse.com/#feat=mdn-javascript_grammar_trailing_commas。我个人现在选择忽略那些旧浏览器。但你是对的,我删除了它,所以答案更通用。
很好的解决方案。也许只是将秒更改为const s = Math.round(seconds % 60);
谢谢,这正是我想要的。就像 Youtube 一样。【参考方案7】:
主题的变化。处理个位数的秒数略有不同
seconds2time(0) -> "0s"
seconds2time(59) -> "59s"
seconds2time(60) -> "1:00"
seconds2time(1000) -> "16:40"
seconds2time(4000) -> "1:06:40"
function seconds2time (seconds)
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor((seconds - (hours * 3600)) / 60);
var seconds = seconds - (hours * 3600) - (minutes * 60);
var time = "";
if (hours != 0)
time = hours+":";
if (minutes != 0 || time !== "")
minutes = (minutes < 10 && time !== "") ? "0"+minutes : String(minutes);
time += minutes+":";
if (time === "")
time = seconds+"s";
else
time += (seconds < 10) ? "0"+seconds : String(seconds);
return time;
【讨论】:
感谢您为我节省了一个小时【参考方案8】:function formatTime(seconds)
return [
parseInt(seconds / 60 / 60),
parseInt(seconds / 60 % 60),
parseInt(seconds % 60)
]
.join(":")
.replace(/\b(\d)\b/g, "0$1")
【讨论】:
进一步解释为什么这个答案对提问者有用,或者原始问题可能有什么问题,这将有助于提高这个答案的质量。 非常自我解释和很好的答案,减少和简化了最佳答案。 准确答案:) 又短又甜,很好。建议将parseInt
替换为Math.floor
esp。如果使用 TypeScript(parseInt
应该有字符串输入)【参考方案9】:
我喜欢第一个答案。 有一些优化:
源数据是一个数字。不需要额外的计算。
过多的计算
结果代码:
Number.prototype.toHHMMSS = function ()
var seconds = Math.floor(this),
hours = Math.floor(seconds / 3600);
seconds -= hours*3600;
var minutes = Math.floor(seconds / 60);
seconds -= minutes*60;
if (hours < 10) hours = "0"+hours;
if (minutes < 10) minutes = "0"+minutes;
if (seconds < 10) seconds = "0"+seconds;
return hours+':'+minutes+':'+seconds;
【讨论】:
我认为这个函数是前端使用的一个特性,因此我原型化的是字符串而不是数字。 Number 总是可以是一个字符串,但反过来不行。 我认为Number
是正确的,因为seconds
实际上是一个数字。你应该在使用这个函数之前从字符串转换,这是正确的做法!
赞成的答案,就像这个一样,很糟糕。我敢打赌,你不需要所有的数字来使用这种方法。不要为随机实用的东西修改原型。
或者只是原型化并使其成为函数 numToHHMMSS 或 strTOHHMMSS
此解决方案有效,而所选解决方案为某些值生成 60 秒。【参考方案10】:
使用惊人的moment.js 库:
function humanizeDuration(input, units )
// units is a string with possible values of y, M, w, d, h, m, s, ms
var duration = moment().startOf('day').add(units, input),
format = "";
if(duration.hour() > 0) format += "H [hours] ";
if(duration.minute() > 0) format += "m [minutes] ";
format += " s [seconds]";
return duration.format(format);
这允许您指定任何持续时间,无论是小时、分钟、秒、米,并返回人类可读的版本。
【讨论】:
【参考方案11】:new Date().toString().split(" ")[4];
结果15:08:03
【讨论】:
很好 - 谢谢!我根据自己的需要进行的一个小改进是将持续时间(以毫秒为单位)转换为 HH:MM:SS --new Date(new Date().getTime() - startTime).toUTCString().split(" ")[4]
其中 startTime
之前使用 startTime = new Date().getTime();
设置。 (我不得不使用toUTCString()
,否则时间会超过一个小时。)【参考方案12】:
很简单,
function toTimeString(seconds)
return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
【讨论】:
这仅适用于您的持续时间少于 1 天。但除此之外,还不错。【参考方案13】:s2t=function (t)
return parseInt(t/86400)+'d '+(new Date(t%86400*1000)).toUTCString().replace(/.*(\d2):(\d2):(\d2).*/, "$1h $2m $3s");
s2t(123456);
结果:
1d 10h 17m 36s
【讨论】:
【参考方案14】:最简单的方法。
new Date(sec * 1000).toISOString().substr(11, 8)
【讨论】:
仅供参考,这是以 24 小时为模,因此如果您输入相当于 25 小时的值,它将显示为 1 小时。小心【参考方案15】:我最喜欢 Webjins 的回答,所以我将其扩展为使用 d 后缀显示天数,使显示有条件,并在纯秒上包含一个 s 后缀:
function sec2str(t)
var d = Math.floor(t/86400),
h = ('0'+Math.floor(t/3600) % 24).slice(-2),
m = ('0'+Math.floor(t/60)%60).slice(-2),
s = ('0' + t % 60).slice(-2);
return (d>0?d+'d ':'')+(h>0?h+':':'')+(m>0?m+':':'')+(t>60?s:s+'s');
返回“3d 16:32:12”或“16:32:12”或“32:12”或“12s”
【讨论】:
这对于 24 天或更长时间的持续时间是不正确的 为什么要比较大于 0 的字符串? @JimmyKane 因为自动类型转换 - 我喜欢它! (加:代码更容易阅读(你有类型转换是有原因的,但让我们停止拖钓(我们俩))。加:只有当 t 是 NaN 时,函数才会失败 - 所以如果你想要安全:做它在输入!) @nïkö 好的,我理解,但更严格的新 JS 版本、linter 等可能会抱怨这一点。只是说,东误会我的意思。我喜欢你的回答【参考方案16】:我喜欢 Powtac 的回答,但我想在 angular.js 中使用它,所以我使用他的代码创建了一个过滤器。
.filter('HHMMSS', ['$filter', function ($filter)
return function (input, decimals)
var sec_num = parseInt(input, 10),
decimal = parseFloat(input) - sec_num,
hours = Math.floor(sec_num / 3600),
minutes = Math.floor((sec_num - (hours * 3600)) / 60),
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;
var time = hours+':'+minutes+':'+seconds;
if (decimals > 0)
time += '.' + $filter('number')(decimal, decimals).substr(2);
return time;
;
])
它在功能上是相同的,只是我添加了一个可选的小数字段来显示小数秒。像使用任何其他过滤器一样使用它:
elapsedTime | HHMMSS
显示: 01:23:45
elapsedTime | HHMMSS : 3
显示: 01:23:45.678
【讨论】:
我有两个 datetime 对象,我想计算这 2 个 datetime 对象的差异并以这种格式返回输出:小时:分钟:秒数,如:01:02:45.Can你请告诉我或用你的代码指导我吗??【参考方案17】:这是另一个版本,也可以处理天数:
function FormatSecondsAsDurationString( seconds )
var s = "";
var days = Math.floor( ( seconds / 3600 ) / 24 );
if ( days >= 1 )
s += days.toString() + " day" + ( ( days == 1 ) ? "" : "s" ) + " + ";
seconds -= days * 24 * 3600;
var hours = Math.floor( seconds / 3600 );
s += GetPaddedIntString( hours.toString(), 2 ) + ":";
seconds -= hours * 3600;
var minutes = Math.floor( seconds / 60 );
s += GetPaddedIntString( minutes.toString(), 2 ) + ":";
seconds -= minutes * 60;
s += GetPaddedIntString( Math.floor( seconds ).toString(), 2 );
return s;
function GetPaddedIntString( n, numDigits )
var nPadded = n;
for ( ; nPadded.length < numDigits ; )
nPadded = "0" + nPadded;
return nPadded;
【讨论】:
【参考方案18】:function toHHMMSS(seconds)
var h, m, s, result='';
// HOURs
h = Math.floor(seconds/3600);
seconds -= h*3600;
if(h)
result = h<10 ? '0'+h+':' : h+':';
// MINUTEs
m = Math.floor(seconds/60);
seconds -= m*60;
result += m<10 ? '0'+m+':' : m+':';
// SECONDs
s=seconds%60;
result += s<10 ? '0'+s : s;
return result;
例子
到 HHMMSS(111); “01:51” 到HHMMSS(4444); “01:14:04” 到 HHMMSS(33); “00:33”【讨论】:
我也会在秒数上加上Math.floor()
,因为它们可能以小数形式给出。 (发生在我身上。)【参考方案19】:
这是使用Date.prototype.toLocaleTimeString()
的示例。我选择 GB 作为语言,因为美国在最初一小时显示 24
而不是 00
。此外,我选择Etc/UTC
作为时区,因为UTC
在list of tz database time zones 中是它的别名。
const formatTime = (seconds) =>
new Date(seconds * 1000).toLocaleTimeString('en-GB',
timeZone:'Etc/UTC',
hour12: false,
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
);
console.log(formatTime(75)); // 00:01:15
.as-console-wrapper top: 0; max-height: 100% !important;
这是相同的示例,但使用了Intl.DateTimeFormat
。此变体让您可以实例化一个可重用的格式化程序对象,它的性能更高。
const dateFormatter = new Intl.DateTimeFormat('en-GB',
timeZone:'Etc/UTC',
hour12: false,
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
);
const formatTime = (seconds) => dateFormatter.format(new Date(seconds * 1000));
console.log(formatTime(75)); // 00:01:15
.as-console-wrapper top: 0; max-height: 100% !important;
【讨论】:
如果时间大于 24 小时(86400 秒),这将给出错误的结果 这非常聪明。谢谢!【参考方案20】:我认为这是迄今为止最快的性能:
var t = 34236; // your seconds
var time = ('0'+Math.floor(t/3600) % 24).slice(-2)+':'+('0'+Math.floor(t/60)%60).slice(-2)+':'+('0' + t % 60).slice(-2)
//would output: 09:30:36
【讨论】:
真的很棒。恭喜! 很好......而且 >24 小时安全。【参考方案21】:这就是我的做法。它似乎工作得很好,而且非常紧凑。 (不过它使用了很多三元运算符)
function formatTime(seconds)
var hh = Math.floor(seconds / 3600),
mm = Math.floor(seconds / 60) % 60,
ss = Math.floor(seconds) % 60;
return (hh ? (hh < 10 ? "0" : "") + hh + ":" : "") + ((mm < 10) && hh ? "0" : "") + mm + ":" + (ss < 10 ? "0" : "") + ss
...用于格式化字符串...
String.prototype.toHHMMSS = function()
formatTime(parseInt(this, 10))
;
【讨论】:
【参考方案22】:您可以使用以下函数将时间(以秒为单位)转换为HH:MM:SS
格式:
var convertTime = function (input, separator)
var pad = function(input) return input < 10 ? "0" + input : input;;
return [
pad(Math.floor(input / 3600)),
pad(Math.floor(input % 3600 / 60)),
pad(Math.floor(input % 60)),
].join(typeof separator !== 'undefined' ? separator : ':' );
不传递分隔符,它使用:
作为(默认)分隔符:
time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51
如果要使用-
作为分隔符,只需将其作为第二个参数传递即可:
time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46
演示
var convertTime = function (input, separator)
var pad = function(input) return input < 10 ? "0" + input : input;;
return [
pad(Math.floor(input / 3600)),
pad(Math.floor(input % 3600 / 60)),
pad(Math.floor(input % 60)),
].join(typeof separator !== 'undefined' ? separator : ':' );
document.body.innerhtml = '<pre>' + JSON.stringify(
5.3515555 : convertTime(5.3515555),
126.2344452 : convertTime(126.2344452, '-'),
1156.1535548 : convertTime(1156.1535548, '.'),
9178.1351559 : convertTime(9178.1351559, ':'),
13555.3515135 : convertTime(13555.3515135, ',')
, null, '\t') + '</pre>';
另见this Fiddle。
【讨论】:
【参考方案23】:块上有一个新的字符串方法:padStart
const str = '5';
str.padStart(2, '0'); // 05
这是一个示例用例:YouTube durations in 4 lines of JavaScript
【讨论】:
这应该是答案下的评论【参考方案24】:可以使用正则表达式匹配Date对象的toString()
方法返回的字符串中的时间子字符串,其格式如下:“Thu Jul 05 2012 02:45:12 GMT+0100 (GMT夏令时)”。请注意,此解决方案使用自纪元以来的时间:1970 年 1 月 1 日午夜。此解决方案可以是单行的,但将其拆分会更容易理解。
function secondsToTime(seconds)
const start = new Date(1970, 1, 1, 0, 0, 0, 0).getTime();
const end = new Date(1970, 1, 1, 0, 0, parseInt(seconds), 0).getTime();
const duration = end - start;
return new Date(duration).toString().replace(/.*(\d2:\d2:\d2).*/, "$1");
【讨论】:
时区讨厌这个。问题是将秒数转换为持续时间。【参考方案25】:这是我最近为 MM:SS 写的一篇。这并不完全符合问题,但它是一种不同的单行格式。
const time = 60 * 2 + 35; // 2 minutes, 35 seconds
const str = (~~(time / 60) + "").padStart(2, '0') + ":" + (~~((time / 60) % 1 * 60) + "").padStart(2, '0');
str // 02:35
编辑:这是为了多样化而添加的,但这里最好的解决方案是下面的https://***.com/a/25279399/639679。
【讨论】:
【参考方案26】:对此最普遍的回答是
function hms(seconds)
return [3600, 60]
.reduceRight(
(p, b) => r => [Math.floor(r / b)].concat(p(r % b)),
r => [r]
)(seconds)
.map(a => a.toString().padStart(2, '0'))
.join(':');
一些示例输出:
> hms(0)
< "00:00:00"
> hms(5)
< "00:00:05"
> hms(60)
< "00:01:00"
> hms(3785)
< "01:03:05"
> hms(37850)
< "10:30:50"
> hms(378500)
< "105:08:20"
查看https://***.com/a/66504936/1310733的解释
【讨论】:
【参考方案27】:我就是这样做的
function timeFromSecs(seconds)
return(
Math.floor(seconds/86400)+'d :'+
Math.floor(((seconds/86400)%1)*24)+'h : '+
Math.floor(((seconds/3600)%1)*60)+'m : '+
Math.round(((seconds/60)%1)*60)+'s');
timeFromSecs(22341938) 将返回 '258d 14h 5m 38s'
【讨论】:
【参考方案28】:我个人更喜欢没有前导零的前导单位(天、小时、分钟)。但秒应始终以分钟 (0:13) 开头,此演示文稿很容易被视为“持续时间”,无需进一步解释(标记为 min、sec(s) 等),可用于各种语言(国际化)。
// returns (-)d.h:mm:ss(.f)
// (-)h:mm:ss(.f)
// (-)m:ss(.f)
function formatSeconds (value, fracDigits)
var isNegative = false;
if (isNaN(value))
return value;
else if (value < 0)
isNegative = true;
value = Math.abs(value);
var days = Math.floor(value / 86400);
value %= 86400;
var hours = Math.floor(value / 3600);
value %= 3600;
var minutes = Math.floor(value / 60);
var seconds = (value % 60).toFixed(fracDigits || 0);
if (seconds < 10)
seconds = '0' + seconds;
var res = hours ? (hours + ':' + ('0' + minutes).slice(-2) + ':' + seconds) : (minutes + ':' + seconds);
if (days)
res = days + '.' + res;
return (isNegative ? ('-' + res) : res);
//模仿服务器端(.net,C#)持续时间格式,如:
public static string Format(this TimeSpan interval)
string pattern;
if (interval.Days > 0) pattern = @"d\.h\:mm\:ss";
else if (interval.Hours > 0) pattern = @"h\:mm\:ss";
else pattern = @"m\:ss";
return string.Format("0", interval.ToString(pattern));
【讨论】:
【参考方案29】:/**
* Formats seconds (number) to H:i:s format.
* 00:12:00
*
* When "short" option is set to true, will return:
* 0:50
* 2:00
* 12:00
* 1:00:24
* 10:00:00
*/
export default function formatTimeHIS (seconds, short = false = )
const pad = num => num < 10 ? `0$num` : num
const H = pad(Math.floor(seconds / 3600))
const i = pad(Math.floor(seconds % 3600 / 60))
const s = pad(seconds % 60)
if (short)
let result = ''
if (H > 0) result += `$+H:`
result += `$H > 0 ? i : +i:$s`
return result
else
return `$H:$i:$s`
【讨论】:
【参考方案30】:const secondsToTime = (seconds, locale) =>
const date = new Date(0);
date.setHours(0, 0, seconds, 0);
return date.toLocaleTimeString(locale);
console.log(secondsToTime(3610, "en"));
语言环境参数(“en”、“de”等)是可选的
【讨论】:
以上是关于JavaScript 秒到时间字符串,格式为 hh:mm:ss的主要内容,如果未能解决你的问题,请参考以下文章