Compare Dates in JavaScript

Compare two dates

BeginnerDate/Time ProgramsExample 4 of 10
compare-dates.js
1// Method 1: Compare timestamps
2function compareDates(date1, date2) {
3 if (date1.getTime() === date2.getTime()) {
4 return 0; // Equal
5 } else if (date1.getTime() > date2.getTime()) {
6 return 1; // date1 is later
7 } else {
8 return -1; // date1 is earlier
9 }
10}
11
12const date1 = new Date('2024-01-15');
13const date2 = new Date('2024-01-20');
14console.log('Compare:', compareDates(date1, date2));
15
16// Method 2: Simple comparisons
17console.log('date1 > date2:', date1 > date2);
18console.log('date1 < date2:', date1 < date2);
19console.log('date1 === date2:', date1.getTime() === date2.getTime());
20
21// Method 3: Check if date is in range
22function isDateInRange(date, startDate, endDate) {
23 return date >= startDate && date <= endDate;
24}
25
26const 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));
30
31// Method 4: Check if date is today
32function isToday(date) {
33 const today = new Date();
34 return date.getDate() === today.getDate() &&
35 date.getMonth() === today.getMonth() &&
36 date.getFullYear() === today.getFullYear();
37}
38
39console.log('Is today:', isToday(new Date()));
40
41// Method 5: Check if date is past/future
42function isPast(date) {
43 return date < new Date();
44}
45
46function isFuture(date) {
47 return date > new Date();
48}
49
50console.log('Is past:', isPast(new Date('2020-01-01')));
51console.log('Is future:', isFuture(new Date('2025-01-01')));
52
53// 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}
59
60const 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