How to get yesterday’s date in JavaScript without a library

Updated Sep 22, 2023 ⤳ 2 min read

To get yesterday’s date in JavaScript, you need to get today’s date and use setDate() of the Date object to subtract a day from it.

🎧 Debugging Jam

Calling all coders in need of a rhythm boost! Tune in to our 24/7 Lofi Coding Radio on YouTube, and let's code to the beat – subscribe for the ultimate coding groove!" Let the bug-hunting begin! 🎵💻🚀

24/7 lofi music radio banner, showing a young man working at his computer on a rainy autmn night with hot drink on the desk.

It’s quite easy to implement; You can do it in four steps:

  1. Get the current date by Date constructor
  2. Get the day of the month via Date.prototype.getDate()
  3. Subtract 1 day from it
  4. Use Date.prototype.setDate() to set the result as the day of the month

Let’s write the code:


let currentDate = new Date()
           
// Instantiate another object (based on the current), so we won't mutate the currentDate object
let yesterday = new Date(currentDate)
yesterday.setDate(yesterday.getDate() - 1)
           
console.log(yesterday)

In the above example, we get the current date (today in this case). Then, we instantiate another date object to avoid mutating the currentDate object. 

The getDate() method returns the day of the month for our date object. The return value is an integer number between 1 and 31.

Next, we subtract 1 from the value returned by getDate() and update the object by the setDate()method.

If the result is outside the acceptable range for the respective month, setDate() will update the Date object accordingly (by changing it to the next or previous month respectively).

For instance, if we're on the first day of the month, and we subtract a day, the result would be the last day of the previous month - instead of 0.

How do I get yesterday's timestamp?

To get the yesterday's date in Unix Timestamp, first you need to call Date.prototype.valueOf() on your Date object. And since the returned value is in milliseconds, you'll have to divide it by 1000:


let currentDate = new Date()
           
// Instantiate another object (based on the current), so we won't mutate the currentDate object
let yesterday = new Date(currentDate)
yesterday.setDate(yesterday.getDate() - 1)

console.log(Math.floor(yesterday.valueOf() / 1000))

It's important to return only elapsed seconds as an integer value; That's why we used Math.floor(), and not Math.round().

And that's how you get yesterday's date in JavaScripts hope you found this quick guide helpful!

Thanks for reading.

Disclaimer: This post may contain affiliate links. I might receive a commission if a purchase is made. However, it doesn’t change the cost you’ll pay.

`