代码之家  ›  专栏  ›  技术社区  ›  SergkeiM

片刻js显示了错误的差异

  •  0
  • SergkeiM  · 技术社区  · 6 年前

    我有一个关于时间差的愚蠢问题 moments.js .

    获取时差的代码

    var to = '2019-02-03 01:55:00'; //When counter ends
    var start = moment(); //Current time, for this example assume is '2019-02-03 01:53:00'
    var end = moment(to);
    
    var seconds = end.diff(start, 'seconds', true); //get difference in seconds, the third params is to get not rounded, but since in toMMSS function I do parseInt is useless
    var formatted = toMMSS(seconds);
    

    设置秒数格式的函数:

    var toMMSS = function (seconds) {
                var sec_num = parseInt(seconds, 10);
                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 (minutes < 10) {minutes = "0"+minutes;}
                if (seconds < 10) {seconds = "0"+seconds;}
    
                return minutes+':'+seconds;
            };
    

    现在预期的产出是 02:00 ,但有些人 02:05 02:07 02:03 但是 '2019-02-03 01:55:00' - '2019-02-03 01:53:00' 应该是(逻辑上) 02:00

    还有一刻。js默认值:

    moment.tz.setDefault('Europe/Moscow');
    moment.defaultFormat = "YYYY-MM-DD HH:mm:ss";
    

    var end 也在那个时区。

    我尝试了其他计算差异的方法,但得到了相同的结果,可能是在某些PC/浏览器上这不准确,如果是的话,也许有一个解决方法不依赖用户PC时间?

    感谢您的帮助。

    0 回复  |  直到 6 年前