【问题标题】:Comparing time using Moment.js in a minute format that doesn't reset on the hour使用 Moment.js 以分钟格式比较时间,不会在小时内重置
【发布时间】:2014-02-25 19:00:22
【问题描述】:

我正在尝试根据对象的修改时间(格式如下: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 中将它用作过滤器函数的一部分。但我把它去掉了,因为我不认为它是必要的)

【问题讨论】:

    标签: javascript json angularjs momentjs


    【解决方案1】:

    由于您使用的是Moment.js,您可以使用内置的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
    

    【讨论】:

    • 太完美了!谢谢你。我之前尝试过使用 diff ,但我一定有一些倒退的东西。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多