我有这个函数,它以秒为参数,并返回一个时间格式字符串。
var secondstotime = function(secs) {
var t = new Date(1970, 0, 1);
t.setSeconds(secs);
var s = t.toTimeString().substr(0, 8);
if (secs > 86399) {
s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2);
}
return s;
}
Chrome和Mozilla给了我两个不同的结果,我知道Chrome是正确的,但我不知道为什么Mozilla会在时间字符串中添加一小时。
例如:
console.log(secondstotime(20000));
Chrome给了我05:33:20
,Mozilla给了我06:33:20
我似乎无法看到问题是什么以及代码是否兼容?
答案 0 :(得分:0)
首先,我会尝试使用Moment.js,他们将处理浏览器实现之间的差异:
const secToTime = s => moment("2015-01-01").startOf('day')
.seconds(s)
.format('H:mm:ss');
然后运行:
secToTime(20000)
否则你应该使用Date函数检查你的实现,解析vs toTimeString vs constructuor