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'));
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
IE8 expects '/'
as the separator in a date string, that's why your function fails.
It can be simplified to:
var compareDate = function(value){
var dateFragements = value.split('/');
if (dateFragements.length == 3) {
var currentDate = function(){ return (this.setHours(0),
this.setMinutes(0),
this.setSeconds(0),
this); }.call(new Date)
,startDate = new Date([dateFragements[2],
dateFragements[1],
dateFragements[0]].join('/'));
return startDate>=currentDate;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With