const d1 = new Date('2019-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01');
How do you compare if two dates are equal? Surprisingly, both triple equals and double equals don’t work when comparing two dates.
const d1 = new Date('2019-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01'); d1 === d3; // false d1 == d3; // false
To compare two dates, you can use either
toString() method converts the date into an ISO date string, and the
valueOf() method converts the date into milliseconds since the epoch.
const d1 = new Date('2019-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01'); // 'Fri May 31 2019 20:00:00 GMT-0400 (Eastern Daylight Time)' d1.toString(); d1.valueOf(); // 1559347200000 d1.toString() === d2.toString(); // false d1.toString() === d3.toString(); // true d1.valueOf() === d2.valueOf(); // false d1.valueOf() === d3.valueOf(); // true
Before and After
=== can compare whether two dates are equal, surprisingly both
> work fine for comparing dates:
d1 < d2; // false d1 < d3; // false d2 < d1; // true
So to check if date
a is before date
b, you can just check
a < b.
a - b gives you the difference between two dates in milliseconds.
const d1 = new Date('2019-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01'); d1 - d3; // 0 d1 - d2; // 1 year in milliseconds, 1000 * 60 * 60 * 24 * 365
In other words, you can compare two dates
b by using
a - b.
b is after
a - b < 0.
sort() call gives you the dates in reverse order.
const d1 = new Date('2017-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01'); [d2, d1, d3].sort(); // [d3, d2, d1]
sort() is actually sorting based on the below string values:
[ 'Fri May 31 2019 20:00:00 GMT-0400 (Eastern Daylight Time)', 'Thu May 31 2018 20:00:00 GMT-0400 (Eastern Daylight Time)', 'Wed May 31 2017 20:00:00 GMT-0400 (Eastern Daylight Time)' ]
To sort dates based on which date happened first, you need to pass a
compare()callback to the
sort() function. The
compare() function should return:
- A positive number if
a > b
- A negative number if
a < b
a - b as
your comparison function:
const d1 = new Date('2017-06-01'); const d2 = new Date('2018-06-01'); const d3 = new Date('2019-06-01'); [d2, d1, d3].sort((a, b) => a - b); // [d1, d2, d3]
- Variables: Variables are used to store data. They are declared using the
- Operators: Operators are used to perform operations on data.
- Control flow statements: Control flow statements allow you to control the order in which your code is executed.
- Functions: Functions are blocks of code that can be reused.
- Objects: Objects are used to store data in key-value pairs.
- Arrays: Arrays are used to store data in a sequential order.
- Events and event handlers: Events are notifications that are sent by the browser when something happens, such as when the user clicks on an element or moves the mouse over an element. Event handlers are functions that are called in response to an event.