Привет. Я пытаюсь получить разницу во времени между двумя датами.Я написал функцию, которая делает это, но когда я преобразую введенную дату из общих настроек в дату момента, она дает мне однозначное число.
Используя это в моем собственном проекте реагирования
Я пыталсято же самое с датами ручного ввода в виде строки, и она отлично работает.
что я здесь не так делаю?
// Эта функция не работает должным образом (я хочу, чтобы эта функция возвращала времяразница)
export const getTimeDiffWithCurrentTime = (lastLoggedInDateTime) => {
var moment = require('moment');
//***PROBLEM IS HERE IN THE BELLOW LINE WHERE THE OUTPUT IS 1547571895000***
var momentLastLoggedInDateTime = moment(lastLoggedInDateTime, "DD-MM-YYYY HH:mm:ss");
var currentDateTime = moment().format("DD-MM-YYYY HH:mm:ss");
consoleLog(' lastLoggedInDateTime - ' + lastLoggedInDateTime + 'momentLastLoggedInDateTime - ' + momentLastLoggedInDateTime
+ ' currentDateTime - ' + currentDateTime);
var timeDifference = currentDateTime.diff(momentLastLoggedInDateTime);
consoleLog("Time difference - " + timeDifference);
return timeDifference;
}
выход: lastLoggedInDateTime - 15-01-2019 17:04:55momentLastLoggedInDateTime - 1547571895000 currentDateTime - 15-01-2019 17:04:57
error -TypeError: currentDateTime.diff is not a function
Функция тестирования, которая работает
export const getTimeDiff = () => {
var moment = require('moment');
var now = moment("04-09-2013 15:00:00", "DD-MM-YYYY HH:mm:ss");
var then = moment("04-09-2013 14:59:40", "DD-MM-YYYY HH:mm:ss");
var timeDifference = now.diff(then);
consoleLog("Time difference - " + timeDifference);
}
вывод: Time difference - 20000
Я хочу, чтобы функция getTimeDiffWithCurrentTime
работала, передав дату и получая разницу.
Ваша помощь очень ценится
R
ОБНОВЛЕНИЕ
Все заработало.Несколько замечаний.
Некоторые предлагали просто использовать var momentLastLoggedInDateTime = moment(lastLoggedInDateTime);
, но это дало мне предупреждение, подобное
Deprecation warning: value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info. Arguments: [0] _isAMomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: 2016-9-26 19:30, _f: undefined, _strict: undefined, _locale: [object Object]
ТакМне пришлось использовать var momentLastLoggedInDateTime = moment(lastLoggedInDateTime, "DD-MM-YYYY HH:mm:ss");
, что дало мне значение 1547571895000
Единственное изменение, которое я должен был внести в функцию 'getTimeDiffWithCurrentTime', было изменить var currentDateTime = moment().format("DD-MM-YYYY HH:mm:ss");
на var currentDateTime = moment();
, поэтому рабочая функция
export const getTimeDiffWithCurrentTime = (lastLoggedInDateTime) => {
var moment = require('moment');
var momentLastLoggedInDateTime = moment(lastLoggedInDateTime, "DD-MM-YYYY HH:mm:ss");
var currentDateTime = moment(); //This was the change required
consoleLog(' lastLoggedInDateTime - ' + lastLoggedInDateTime + 'momentLastLoggedInDateTime - ' + momentLastLoggedInDateTime
+ ' currentDateTime - ' + currentDateTime);
var timeDifference = currentDateTime.diff(momentLastLoggedInDateTime);
consoleLog("Time difference - " + timeDifference);
return timeDifference;
}
Выход
lastLoggedInDateTime - 15-01-2019 18:12:26momentLastLoggedInDateTime - 1547575946000 currentDateTime - 1547575952574
Time difference - 6574
Спасибо