Reputation: 45078
I am trying this but is not working... why?
<html>
<body>
<script type="text/javascript">
var today=new Date(); //today is Nov 28, 2010
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
document.write(today+" ");
var today2 = new Date("November 28, 2010");
document.write(today2 + " ");
if (today == today2) { document.write("==");
if (!(today > today2) && !(today < today2) ) {document.write("== ");}
if (today > today2) { document.write("> ");}
if (today >= today2 ){ document.write(">= ");}
if (today < today2 ) { document.write("< ");}
if (today <= today2 ){ document.write("<= ");}
</script>
</body>
</html>
And I always get this:
Sun Nov 28 2010 00:00:00 GMT+0900 (JST) Sun Nov 28 2010 00:00:00 GMT+0900 (JST) > >=
Aren't both dates to be the same? Hence, I should get ==
printed but is not happening... ;(
Thank you for your help in advance.
Upvotes: 24
Views: 27718
Reputation: 219
You can do it by setting time to 00:00:00
for the given date and for today's date, and then compare them.
The code example is below:
function checkDateIsToday (today, givenDate) {
if(today.setHours(0,0,0,0) === givenDate.setHours(0,0,0,0)) {
console.log('Date is todays date');
} else {
console.log('Date is not todays date');
}
}
checkDateIsToday(new Date(), new Date('2020-07-10'));
Upvotes: 0
Reputation: 221
function today(td) {
var d = new Date();
return td.getDate() == d.getDate() && td.getMonth() == d.getMonth() && td.getFullYear() == d.getFullYear();
}
Upvotes: 22
Reputation: 322452
They will never match because you're comparing two separate Date
object instances.
You need to get some common value that can be compared. For example .toDateString()
.
today.toDateString() == today2.toDateString(); // true
If you just compare two separate Date
objects, even if they have the exact same date value, they are still different.
For example:
today == new Date( today ); // false
They are the same date/time value, but are not the same object, so the result is false
.
Upvotes: 71