момент.js показывает неправильную разницу - PullRequest
0 голосов
/ 03 февраля 2019

У меня глупая проблема с разницей во времени в 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

PS по умолчанию moment.js:

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

var end также находится в этом часовом поясе.

Я пробовал другиеспособы расчета разницы, но получить тот же результат, может случиться так, что на некоторых ПК / браузере это не точно, если да, может быть есть обходной путь, чтобы не полагаться на время пользователя ПК?

Любая помощь приветствуется.

...