
How to get yesterday's date in JavaScript
October 30, 2023
Working with dates in JavaScript is a common yet intricate task. Retrieving yesterday's date may seem simple at first glance, but requires attention to details like time zones and daylight saving time. Here's a detailed guide to doing it right.
Understanding the Date object
The Date object in JavaScript is a cornerstone for managing dates and times. It allows for the creation, manipulation, and formatting of dates. To instantiate a Date object representing now:
let currentDate = new Date();
Subtracting a day reliably
To get yesterday's date, you can subtract one day from today’s date. This involves understanding how dates change over time and across different locales.
Using setDate
The setDate
method is the most reliable approach for subtracting days. It automatically adjusts the month and year if the calculation spans over those periods:
let currentDate = new Date(); currentDate.setDate(currentDate.getDate() - 1); let yesterday = currentDate;
Accounting for time zones
If you need a time zone-neutral representation, use UTC methods to ensure consistency across all user locales:
let currentDate = new Date(); let yesterday = new Date(Date.UTC( currentDate.getUTCFullYear(), currentDate.getUTCMonth(), currentDate.getUTCDate() - 1 ));
Formatting the date
Once you have yesterday's date, you might want to display it in a user-friendly way. JavaScript offers several options for this.
Using toLocaleDateString
The toLocaleDateString
method can represent the date in a readable string format appropriate for a specified locale:
let yesterday = new Date(new Date().setDate(new Date().getDate() - 1)); let dateString = yesterday.toLocaleDateString('en-US'); // MM/DD/YYYY in US English
Custom formatting
Alternatively, you can construct a custom formatted string:
let yesterday = new Date(new Date().setDate(new Date().getDate() - 1)); let formattedDate = yesterday.getFullYear() + '-' + (yesterday.getMonth() + 1) + '-' + yesterday.getDate();
Handling locales and options
When internationalization is a concern, toLocaleDateString
can be used with options to provide more control over the output:
let options = { year: 'numeric', month: 'long', day: 'numeric' }; let dateString = yesterday.toLocaleDateString('en-US', options);
Edge cases and testing
When dealing with dates, you must consider edge cases such as year transitions and daylight saving time changes. Always test your date calculations in various scenarios to ensure robustness.
Performance considerations
Date computations, especially in critical application paths, should be optimized. Reuse calculated dates where possible and benchmark date operations if they are a performance concern.
Best practices in date manipulation
For serious date handling, especially in production environments, adhere to these best practices:
- Prefer UTC for server-side operations and storage.
- Consider libraries like Moment.js or date-fns for complex scenarios.
- Profile and optimize date operations if they become a bottleneck.
Ship faster, worry less with Basedash
How to Sort Object Array by Boolean Property in JavaScript
Max Musing
How to Truncate Date in MySQL
Max Musing
What is evented I/O for V8 JavaScript?
Max Musing
Replace + with Space in JavaScript
Max Musing
How to Sort JavaScript Objects by Key
Max Musing
How to Scroll Automatically to the Bottom of a Page in JavaScript
Max Musing