cd d
cd d

Reputation: 73

How Can I Calculate No Of Days From Two Dates

I want to Calculate no of days from two dates My date Format is dd-mmm-yyyy Like "10-Nov-2020" Can any one help me on same?

<script>
        var deFromDate;
        var deToDate;
        var statarr;
        function deFromDateChanged(s, e) {
            deFromDate = (s.GetInputElement().value)
            //statarr = deFromDate.split('-');
        }
        function deToDateChanged(s, e) {
            deToDate = (s.GetInputElement().value)
            var Difference_In_Time = deToDate.getTime() - deFromDate.getTime();
            var Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);
            alert(Difference_In_Days);
        }

    </script>

I am getting Error on getTime() Is there any other Approach to do same

Upvotes: 0

Views: 51

Answers (2)

pilchard
pilchard

Reputation: 12911

Using Date.parse() (though it is discouraged due to inconsistent implementation)

function datediff(first, second) {
    return Math.round((second-first)/(1000*60*60*24));
}

const deFromDate = Date.parse('10-Nov-2020');
const deToDate = Date.parse('15-Nov-2020');

console.log(datediff(deFromDate, deToDate));

Manual parsing

var months = {
    'Jan' : 1,
    'Feb' : 2,
    'Mar' : 3,
    'Apr' : 4,
    'May' : 5,
    'Jun' : 6,
    'Jul' : 7,
    'Aug' : 8,
    'Sep' : 9,
    'Oct' : 10,
    'Nov' : 11,
    'Dec' : 12
}
function parseDate(str) {
    var [dd, mmm, yyyy] = str.split('-');
    return new Date(yyyy, months[mmm]-1, dd); // months are 0 indexed
}

function datediff(first, second) {
    return Math.round((second-first)/(1000*60*60*24));
}

const deFromDate = parseDate('10-Nov-2020');
const deToDate = parseDate('15-Nov-2020');

console.log(datediff(deFromDate, deToDate));

Upvotes: 1

cd d
cd d

Reputation: 73

I tried using Regex:

 <script>
        var deFromDate;
        var deToDate;
        var dt1;
        var dt2;
        function deFromDateChanged(s, e) {
            deFromDate = (s.GetInputElement().value)
            dt1 = new Date(deFromDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"));
        }
        function deToDateChanged(s, e) {
            deToDate = (s.GetInputElement().value)
            dt2 = new Date(deToDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"));
            var result = ((dt2 - dt1) / 86400000);
            alert(result);
        }

    </script>

Upvotes: 0

Related Questions