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

时间:2013-04-24 23:39:11

标签: javascript google-chrome firefox

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

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

我似乎无法看到问题是什么以及代码是否兼容?

1 个答案:

答案 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