有人可以解释一下为什么这不能正常工作吗?下面是使用 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
晚餐在某些地方完全搞砸了,比如上面的,而在其他地方却工作得很好。 基本上..如果另一个日期是在另一天,它不知道如何查找小时数,因此它会查找当天这两个小时之间的差异。
18:35 至 04:35。预计是早上18:35到04:35,大约10个小时。相反,它的作用是计算从早上 04:35 到当天晚些时候 18:35 的时间。 我该如何解决这个问题才能正常工作?
看来我还必须说明一天..我该如何格式化它,使其成为天+小时+分钟
最佳答案
好吧,你只是向它提供时间,但它也必须存储一些日期。如果您不提供日期,它只会被初始化为当前日期,这正是您的情况所发生的情况。
此外,根本无法暂时知道您想要设置的日期。您必须自行设置日期。
最简单的事情就是 add a day到您创建的日期:dinnertimeleft.add(1, 'd')
如果您也想提供日期(最好是完整的日期),您可以使用以下格式字符串:YYYY-MM-DD HH:mm
或者创建您自己的以下 this文档。
关于javascript - Moment.js - 如果日期处于不同日期,则无法正确计算日期之间的 .diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43955892/