Moment.js - не могу правильно рассчитать разницу между датами, если они в разные дни
Может кто-нибудь объяснить мне, почему это не работает должным образом. Ниже приведен код, который использует moment.js для вычисления разницы между текущим и моим переменным временем.
//breakfast
var breakfasttimeleft = moment(person.breakfast, 'HH:mm');
console.log("Person breakfast is at: " + person.breakfast + " -- Current time is at: " + currenttime);
console.log(breakfasttimeleft.diff(now, 'minutes'));
//lunch
var lunchtimeleft = moment(person.lunch, 'HH:mm');
console.log("Person lunch is at: " + person.lunch + " -- Current time is at: " + currenttime);
console.log(lunchtimeleft.diff(now, 'minutes'));
//dinner
var dinnertimeleft = moment(person.dinner, 'HH:mm');
console.log("Person dinner is at: " + person.dinner + " -- Current time is at: " + currenttime);
console.log(dinnertimeleft.diff(now, "minutes"));
})
ЗДЕСЬ ВЫХОД:
CONSOLE LOG
Person breakfast is at: 18:35 -- Current time is at: 18:35
0
Person lunch is at: 23:35 -- Current time is at: 18:35
300
Person dinner is at: 04:35 -- Current time is at: 18:35
-840
Ужин полностью испорчен в некоторых местах, например, наверху, а в других он работает отлично. В основном... он не знает, как искать часы, если другая дата в другой день, поэтому вместо этого он будет искать разницу между этими 2 часами в текущем дне.
С 18:35 до 04:35 Предполагается, что это будет с 18:35 до 04:35 утра, что составляет около 10 часов. Вместо этого он вычисляет время с 04:35 утра до 18:35 позже в тот же день. Как я могу исправить это для правильной работы?
Похоже, я должен указать день, а также.. как я могу отформатировать его так, чтобы это был день + часы + минуты
1 ответ
Ну, вы просто указываете время, но оно также должно хранить некоторую дату. Если вы не предоставите дату, она просто инициализируется до текущей даты, что и происходит в вашем случае.
Также просто нет возможности узнать дату, которую вы хотите установить. Вы должны будете установить дату самостоятельно.
Проще всего было бы просто добавить день к дате, которую вы создали: dinnertimeleft.add(1, 'd')
Если вы также хотите указать дату (в идеале полную), вы можете использовать эту строку формата: YYYY-MM-DD HH:mm
Или создайте свой собственный, следуя этой документации.