JavaScript error with formatting Date objects

Tags: ,



I am receiving a very specific logic error in my code and I am not sure what is causing it. I have a function formatDate() which gets the current date and puts it in the format yyyy-mm-dd. To achieve this, I have to add a “0” to the front of the month or day when it is a single digit (smaller than 10).

I have written this code to do this:

let year = currentDate.getFullYear();
let month = currentDate.getMonth() < 10 ? "0" + (currentDate.getMonth() + 1) : currentDate.getMonth() + 1;
let date = currentDate.getDate() < 10 ? "0" + currentDate.getDate() : currentDate.getDate();

However, when I do console.log(year + "-" + month + "-" + date), I get this:

2020-010-24

As you can see, the zero is not added to the date but it is added to the month, despite both variables having the exact same logic. I have no idea what is causing this.

Answer

currentDate.getMonth() returns 9, this mean your condition currentDate.getMonth() < 10 became true, then it appends “0” to month variable.

Get “correct” month value then make the condition:

let month = (currentDate.getMonth() + 1) < 10 ? "0" + (currentDate.getMonth() + 1) : currentDate.getMonth() + 1;


Source: stackoverflow