2014-02-25 53 views
0

我试图根据对象的修改时间创建一个向上计时器(格式如:2014-02-19T18:49:15)并使用Moment.js将其与当前时间进行比较。但是当它达到60分钟时,它会重新回到0.我认为这是因为我比较了这里的分钟数或至少使用数学来将毫秒数改为整数格式?我不太清楚,当我得到正确格式的分钟时,我很兴奋。分钟的差异是我想要返回的。所以例如一个半小时后我想要一个返回值'90'。使用Moment.js以分钟格式比较时间,但不会在小时重置

function() { 
    return function(entry) { 
     var elpTime = Math.floor(((Date.parse(moment()) - Date.parse(entry.arrival_time))/(1000*60)) % 60); 

     return elpTime; 
    } 
}; 

这里是对象的一个​​例子。

{ 
patient_id: 198, 
arrival_time: "2014-02-19T18:49:15", 
last_modified: "2014-02-19T18:49:15" 
} 

我知道我错过了一些可能很明显的事情。但任何帮助表示赞赏。谢谢!

(需要指出的是,我是在相隔一个Angular.js过滤功能的使用这一点。但我剥出来,因为我不认为这是nessacary)由于您使用Moment.js

回答

0

您可以使用内置的diff函数来返回两个时刻之间的时间段。

function() { 
    return function(entry) { 
     var elpTime = moment(entry.arrival_time).diff(moment(),'minutes'); 

     return elpTime; 
    } 
}; 

从文档:

支持的测量是年,月,周,日,小时,分钟和秒。

默认情况下,moment#diff将返回向下舍入的数字。如果你想要浮点数,传递true作为第三个参数。在2.0.0之前,moment#diff会返回舍入数字,而不是舍入数字。从文档

例子:

var a = moment([2008, 6]); 
var b = moment([2007, 0]); 
a.diff(b, 'years');  // 1 
a.diff(b, 'years', true); // 1.5 
+0

这是完美的!谢谢。我之前尝试过使用diff,但我肯定有东西倒退了。再次感谢! – ryanproject