繁体   English   中英

获取当月差异javascript

[英]get day of month difference javascript

我想得到几天和几年中两个日期之间的差额。 问题在于,由于每个月没有固定的天数,因此我无法弄清楚如何将2个日期与28到31天之间的月进行比较。 我已经做了几年和几个月,因为我知道一年有12个月,所以我可以计算出来。 也许有人知道解决这个问题的方法。 这是我到目前为止所拥有的。 谢谢阅读。

var date1 = new Date(2013,10,1);
var date2 = new Date();

var y1 = date1.getFullYear();
var m1 = date1.getMonth();

var y2 = date2.getFullYear();
var m2 = date2.getMonth();

var totDiff = (y1 - y2) * 12 + (m1 - m2 -1);

var yDiff = Math.floor(Math.abs(totDiff) / 12);
var mDiff = totDiff - (Math.floor((totDiff) / 12) * 12);

console.log("years: " + yDiff + " months: " + mDiff);  

我将在“ while”循环中迭代一个日期,增加较低的日期并计算实现较大日期所需的迭代次数。 这样,您可以计算任何时间单位的差异。

该方法可能如下所示。 很多代码,但是我希望它很清楚(请参见下面的“ dateDiff ”方法):

function addTime(date, unit){
    var date = new Date(date);
    switch (unit){
        case "day":
            date.setDate(date.getDate() + 1);
            break;
        case "month":
            date.setMonth(date.getMonth() + 1);
        break;
        case "year":
            date.setYear(date.getFullYear() + 1);
        break;
    }
    return date;
}
function dateDiff(from, to){
    var from = new Date(from),
        to = new Date(to),
        res = {
            days:0,
            months:0,
            years:0
        };

    while(addTime(from, 'year').valueOf() <= to.valueOf()){
        res.years++;
        from = addTime(from, 'year');
    }
    while(addTime(from, 'month').valueOf() <= to.valueOf()){
        res.months++;
        from = addTime(from, 'month');
    }
    while(addTime(from, 'day').valueOf() <= to.valueOf()){
        res.days++;
        from = addTime(from, 'day');
    }
    return res;
}

和用法:

dateDiff(new Date(..some date..), new Date(..some greater date..))

console.log( dateDiff(new Date(2013, 11, 1), new Date()) );
//Object {days: 26, months: 0, years: 0} 

console.log( dateDiff(new Date(2000, 0, 1), new Date()) );
//Object {days: 26, months: 11, years: 13} 
var today=new Date('January 01, 2014 00:00:00');
var tt=new Date();

var ss=(today-tt)/1000;
days = parseInt(ss / 86400);
   ss = ss % 86400;     
    hours = parseInt(ss / 3600);
    ss = ss % 3600;     
    minutes = parseInt(ss / 60);
    seconds = parseInt(ss % 60);
document.getElementById('d').innerHTML=days; 
document.getElementById('h').innerHTML=hours;
document.getElementById('m').innerHTML=minutes;
document.getElementById('s').innerHTML=seconds;

通过使用上面的一些计算,您可以找到年,天,小时。分钟的两个日期之间的差异,甚至以秒为单位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM