момент. js дает неправильную разницу между - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть следующий код:

let moment = require('moment-timezone');
let now = moment().tz('America/Montevideo');
let limit_date = moment('2020-02-13 14:46:19', 'YYYY-MM-DD HH:mm:ss');
let diff = now.unix() - limit_date.unix();

console.log('now', now.format('DD/MM/YYYY HH:mm'));
console.log('limit_date', limit_date.format('DD/MM/YYYY HH:mm'));
console.log('diff', diff);
console.log('diff', now.diff(limit_date, 'seconds'));

Когда я запускаю код, я получаю следующий консольный вывод:

now 13/02/2020 15:27:08
limit_date 13/02/2020 14:46:19
diff 6049
diff 6049

Поскольку правильная разница должна составлять 2449 секунд, что Я здесь не так делаю?

ОБНОВЛЕНИЕ

Когда я делаю

let now = _moment(_moment().tz('America/Montevideo').format('YYYY-MM-DD HH:mm:ss'), 'YYYY-MM-DD HH:mm:ss');

Тогда разница в секундах верна.

1 Ответ

0 голосов
/ 13 февраля 2020

Проблема здесь в том, что now и limit_date находятся в разных часовых поясах. когда вы указываете время без какого-либо часового пояса, в качестве часового пояса используется браузер по умолчанию.

Использовать часовой пояс в качестве третьего аргумента при его инициализации

 moment('2020-02-13 14:46:19', 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo');

let moment = require('moment-timezone');
let now = moment().tz('America/Montevideo');
let limit_date = moment('2020-02-13 14:46:19', 'YYYY-MM-DD HH:mm:ss', 'America/Montevideo');
let diff = now.unix() - limit_date.unix();
...