JavaScript在不同的浏览器中返回不同的时间结果

JavaScript returning different time results with different browsers

本文关键字:时间 结果 返回 JavaScript 浏览器      更新时间:2023-09-26

我有这个函数,它以秒为参数,并返回一个时间格式字符串。

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

我似乎看不出问题是什么,如果代码不兼容?

首先,我会尝试使用Moment.js,他们会处理浏览器实现之间的差异:

const secToTime = s => moment("2015-01-01").startOf('day')
    .seconds(s)
    .format('H:mm:ss');

然后运行:

secToTime(20000)

否则你应该检查你的实现在使用日期函数,parse vs toTimeString vs constructuor