【问题标题】:get day of month difference javascript获取月差javascript
【发布时间】:2014-01-15 02:04:36
【问题描述】:

我想得到 2 个日期在天数月和年数之间的差异。 问题是,因为任何月份都没有固定的天数,我无法弄清楚如何将 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);  

【问题讨论】:

标签: javascript datediff


【解决方案1】:
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;

您可以通过使用上面的一些计算来找到 year,days,hours.mins 甚至 secs 中的两个日期之间的差异。

【讨论】:

    【解决方案2】:

    我会在“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} 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2016-07-10
      • 1970-01-01
      • 2020-12-23
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多