Javascript MomentJS:以分钟为单位检测时差

Javascript MomentJS:以分钟为单位检测时差,javascript,momentjs,Javascript,Momentjs,我试过了,但没有得到预期的结果 首先,我用下面的方法来区分日期,它是有效的 var inputDate = moment('02/10/2016', 'MM-DD-YYYY'); var birthday = moment('02/05/2016', 'MM-DD-YYYY'); var diff = inputDate.diff(birthday, 'days'); alert(diff); 但当我采用相同的方法处理时间差时,就会失败 var beginningTime = moment(

我试过了,但没有得到预期的结果

首先,我用下面的方法来区分日期,它是有效的

var inputDate = moment('02/10/2016', 'MM-DD-YYYY');
var birthday = moment('02/05/2016', 'MM-DD-YYYY');
var diff = inputDate.diff(birthday, 'days'); 
alert(diff);
但当我采用相同的方法处理时间差时,就会失败

var beginningTime = moment('08:45:21');
var endTime = moment('07:00:01');
var difftm= beginningTime.diff(endTime, 'mm'); 
alert(difftm);

我需要不同的时间。我在哪里犯的错误?请让我知道。谢谢

如果你给你的第二个例子一个日期——如果必要的话是一个非感官的日期——那么你会得到毫秒的差异

var beginningTime = moment('1900-01-01 08:45:21');
var endTime = moment('1900-01-01 07:00:01');
var difftm = beginningTime.diff(endTime, 'mm');
alert(difftm);

只需使用
分钟
而不是

var beginningTime = moment('1900-01-01 08:45:21');
var endTime = moment('1900-01-01 07:00:01');
var difftm= beginningTime.diff(endTime, 'minutes'); 
alert(difftm);
演示:


正如duffn在回答中提到的,日期必须是有效的日期(日期+时间)。

只要你告诉解析器你在寻找什么,Moment就可以处理没有日期的时间。 当您解析没有日期的时间时,请记住,您进行的任何差异计算可能无法解释DST转换,因此可能是错误的。 当您使用没有日期的时间时,我建议使用UTC模式,这样您就不会意外地在DST转换上进行计算,从而导致错误。因此,您的代码可以按如下方式编写:

console.log(瞬间utc('08:45:21','HH:mm:ss'))
.diff(utc时间(“07:00:01”、“HH:mm:ss”)、“分钟”)

mm
应该是什么意思?上面你用的是
,如果你写的是
分钟
,它不起作用吗?没有一分钟不起作用…看小提琴它起作用:是在前是在后等,就像我有两个时间存储在两个变量中,没有日期部分…那么我怎么能用时间来区分它们呢?没有日期部分是否可能?只需添加一个日期,如:beginningTime='1900-01-01'+beginningTime;对两者使用相同的日期,它应该可以正常工作。如果您配置矩,它可以解析时间。不需要日期。谢谢你的代码。没有utc,我们就无法区分时间和时刻。如果可能的话,我会发布代码。我没有否决你的帖子,所以我不能删除它。至于你的第一个问题,我不知道你为什么说没有UTC的diff。您当然可以在本地模式下进行区分,但是如果在开始时间和结束时间之间发生DST转换,您将得到错误的结果。使用UTC模式,您可以确保任何浏览器中的任意两个时间间隔完全相同。