使用jquery获取两个日期之间的差异

Sim*_*noz 3 jquery jquery-plugins

任何人都可以建议一个jQuery插件来计算两个日期之间的差异(日期也可能包含时间)并显示为'32天','13小时','20分钟'等?

Dan*_*Dan 11

您可以使用本 JavaScript Date对象添加,减去和执行许多其他操作.它足以满足您的大部分需求.如果使用它,您可以节省千字节的页面大小,并使代码可以理解为每个人(可能90%的JavaScript开发人员从未使用过任何插件来计算日期)

我讨厌Date对象的事情是它没有内置的格式化输出.

例如,如果没有字符串解析,您无法告知本周的本地日期或月份名称.然后datejs来帮助你.

Date对象可以做什么?

var msMinute = 60*1000, 
    msDay = 60*60*24*1000,
    a = new Date(2012, 2, 12, /* days, hours*/ 23, 59, 59),
    b = new Date("2013 march 12"), /* string */
    c = new Date(),                /* now */
    d = new Date(c.getTime() + msDay - msMinute);       /* tomorrow - minute */


console.log(a.getUTCHours());
console.log(typeof (b - a + 1000));
console.log(Math.floor((b - a) / msDay) + ' full days between');
console.log(Math.floor(((b - a) % msDay) / msMinute) + ' full minutes between');
console.log('Today is ' + c.getDay() + ' day of week');
console.log('Tomorrow is ' + d.getDay() + ' day of week');
console.log('Your timezone offset is ' + c.getTimezoneOffset() + ' minutes');
Run Code Online (Sandbox Code Playgroud)

轻松计算到圣诞节前的天数

并且,有时候你可以期待一个笑话中有更多的真相 OMG,一个可怕的梦想


mVC*_*Chr 6

这是一个非常简单的Javascript实现,我刚刚入侵.您可以将数学扩展到数月或数年,或者根据需要删除1个值的复数形式.

var dateDiff = function ( d1, d2 ) {
    var diff = Math.abs(d1 - d2);
    if (Math.floor(diff/86400000)) {
        return Math.floor(diff/86400000) + " days";
    } else if (Math.floor(diff/3600000)) {
        return Math.floor(diff/3600000) + " hours";
    } else if (Math.floor(diff/60000)) {
        return Math.floor(diff/60000) + " minutes";
    } else {
        return "< 1 minute";
    }
};

dateDiff(new Date(1990, 1, 1), new Date(1990, 1, 13)) // -> 12 days
Run Code Online (Sandbox Code Playgroud)