Compare Dates in JavaScript
Compare two dates
BeginnerDate/Time ProgramsExample 4 of 10
compare-dates.js
1// Method 1: Compare timestamps2function compareDates(date1, date2) {3 if (date1.getTime() === date2.getTime()) {4 return 0; // Equal5 } else if (date1.getTime() > date2.getTime()) {6 return 1; // date1 is later7 } else {8 return -1; // date1 is earlier9 }10}1112const date1 = new Date('2024-01-15');13const date2 = new Date('2024-01-20');14console.log('Compare:', compareDates(date1, date2));1516// Method 2: Simple comparisons17console.log('date1 > date2:', date1 > date2);18console.log('date1 < date2:', date1 < date2);19console.log('date1 === date2:', date1.getTime() === date2.getTime());2021// Method 3: Check if date is in range22function isDateInRange(date, startDate, endDate) {23 return date >= startDate && date <= endDate;24}2526const checkDate = new Date('2024-01-18');27const start = new Date('2024-01-15');28const end = new Date('2024-01-20');29console.log('In range:', isDateInRange(checkDate, start, end));3031// Method 4: Check if date is today32function isToday(date) {33 const today = new Date();34 return date.getDate() === today.getDate() &&35 date.getMonth() === today.getMonth() &&36 date.getFullYear() === today.getFullYear();37}3839console.log('Is today:', isToday(new Date()));4041// Method 5: Check if date is past/future42function isPast(date) {43 return date < new Date();44}4546function isFuture(date) {47 return date > new Date();48}4950console.log('Is past:', isPast(new Date('2020-01-01')));51console.log('Is future:', isFuture(new Date('2025-01-01')));5253// Method 6: Compare dates (ignore time)54function compareDatesOnly(date1, date2) {55 const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());56 const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());57 return d1.getTime() - d2.getTime();58}5960const dateWithTime = new Date('2024-01-15T15:30:00');61const dateWithoutTime = new Date('2024-01-15T00:00:00');62console.log('Same date (ignore time):', compareDatesOnly(dateWithTime, dateWithoutTime) === 0);
Output
Compare: -1 date1 > date2: false date1 < date2: true date1 === date2: false In range: true Is today: true Is past: true Is future: true Same date (ignore time): true
What's going on
Date comparison checks relationships.
Comparison Methods
getTime(): Compare timestamps
Direct comparison: >, <, ===
Date methods: getDate, getMonth, etc.
Common Checks
Equal: getTime() === getTime()
Before: date1 < date2
After: date1 > date2
In range: start <= date <= end
Date-Only Comparison
Ignore time component
Compare year/month/day only
Useful for date ranges
Best Practices
Use getTime() for equality
Handle timezone issues
Compare dates only when needed
Use helper functions