[removed] Calculate difference between two dates

前端 未结 4 1734
温柔的废话
温柔的废话 2021-01-15 03:23

I want to find difference between two Dates. For that I did subtract one Date object from another Date object. My code is as follows :

var d1 = new Date(); /         


        
4条回答
  •  滥情空心
    2021-01-15 03:57

    So fundamentally the biggest exact date unit is a week which accounts for 7 * 86400 seconds. Months and Years are not exaclty defined. So assuming you want to say "1 Month ago" if the two dates are e.g. 5.1.2013 and 5.2.2013 or 5.2.2013 and 5.3.2013. And saying "1 Month and 1 day ago" if you have e.g. 5.1.2013 and 6.2.2013, then you would have to use a calculation like this:

    // dateFrom and dateTo have to be "Date" instances, and to has to be later/bigger than from.
    function dateDiff(dateFrom, dateTo) {
      var from = {
        d: dateFrom.getDate(),
        m: dateFrom.getMonth() + 1,
        y: dateFrom.getFullYear()
      };
    
      var to = {
        d: dateTo.getDate(),
        m: dateTo.getMonth() + 1,
        y: dateTo.getFullYear()
      };
    
      var daysFebruary = to.y % 4 != 0 || (to.y % 100 == 0 && to.y % 400 != 0)? 28 : 29;
      var daysInMonths = [0, 31, daysFebruary, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    
      if (to.d < from.d) {
        to.d   += daysInMonths[parseInt(to.m)];
        from.m += 1;
      }
      if (to.m < from.m) {
        to.m   += 12;
        from.y += 1;
      }
    
      return {
        days:   to.d - from.d,
        months: to.m - from.m,
        years:  to.y - from.y
      };
    }
    // Difference from 1 June 2016 to now
    console.log(dateDiff(new Date(2016,5,1), new Date()));

    As I said, it gets tricky ;)

提交回复
热议问题