0

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

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

我似乎看不出问题出在哪里,代码是否不兼容?

4

1 回答 1

0

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

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

然后运行:

secToTime(20000)

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

于 2017-03-27T12:03:49.853 回答