使用Moment.js比较时间,该格式不会在小时重置

时间:2014-02-25 19:00:22

标签: javascript json angularjs momentjs

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

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)

1 个答案:

答案 0 :(得分:0)

由于您使用的是Moment.js,因此您可以使用内置的diff函数返回两个时刻之间的时间段。

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

        return elpTime;
    }
};

来自文档:

  

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

     

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

文档示例:

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