Search code examples
javascriptdateinternet-explorer-8date-comparison

JavaScript date comparison fails in IE8


I have a function that converts a date to YYYY-MM-DD from DD/MM/YYYY.

This works in all browsers apart from IE8, for some reason, when creating a new Date object, it is returning NaN.

Basic implementation of the code http://jsfiddle.net/bX83c/1/

var compareDate = function(value){
    var dateFragements = value.split('/');
    if (dateFragements.length == 3) {
        var currentDate = new Date();
            currentDate.setHours(0, 0, 0, 0);

        var startDate = new Date(dateFragements[2] + '-' + dateFragements[1] + '-' + dateFragements[0]);

        if (startDate >= currentDate) {
            return true;
        } else {
            return false;
        }
    }   
}
alert(compareDate('17/09/2013'));

Solution

  • Intialise your date like this. It will work in all browsers

    var startDate = new Date(dateFragements[2] , dateFragements[1] , dateFragements[0]);
    

    There are 4 ways in which Date object can be intialised using constructor

    new Date() // current date and time
    new Date(milliseconds) //milliseconds since 1970/01/01
    new Date(dateString)
    new Date(year, month, day, hours, minutes, seconds, milliseconds)
    

    String in Date object doesn't mean it will accept all date strings. If you want to give a string as input give this. (dateFragements[2] +'/' + dateFragements[1] + '/' + dateFragements[0]);. (/ as the separator) It will be supported in all browsers