How to get difference between 2 Dates in Years, Months and days using moment.js

前端 未结 3 866
长情又很酷
长情又很酷 2020-12-06 05:57

How to get difference between 2 Dates in Years, Months and days using moment.js? For example the difference between 4/5/2014 & 2/22/2013

3条回答
  •  余生分开走
    2020-12-06 06:35

    This worked for me. Verified with Age calculator.

    function calculateAge(){
        ageText = jQuery("#dob").closest(".form-group").find(".age-text");
        ageText.text("");
        level2.dob = jQuery("#dob").val();
        if(!level2.dob) return;
        level2.mdob= moment(level2.dob, 'DD-MM-YYYY');
        if(!level2.mdob.isValid()){
            alert("Invalid date format");
            return;
        }
        level2.targetDate = moment();//TODO: Fill in the target date
        level2.months = level2.targetDate.diff(level2.mdob, 'months'); // Calculate the months
        let years = parseInt(level2.months/12); // A year has 12 months irrespective or leap year or not
        let balanceMonths = level2.months%12; // The balance gives the number of months 
        let days;
        if(!balanceMonths){ // If no balance months, then the date selected lies in the same month
            months = 0; // so months = 0
            days = level2.targetDate.diff(level2.mdob, 'days'); // only the days difference
        }else{
        months = balanceMonths;
        dob_date = level2.mdob.date();
        target_month = level2.targetDate.month();
        construct_date = moment().month(target_month).date(dob_date);
        days = level2.targetDate.diff(construct_date, 'days')+1; // There might be one day missed out. Not sure on UTC
    }
    
    ageText = years +" years " + months+ " months " + days +" days";
    }
    

提交回复
热议问题