45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
/**
|
|
* Adds zeros for 1 digit days/months
|
|
* @param date: string
|
|
*/
|
|
const addMissingZeros = date => (/^\d$/.test(date) ? `0${date}` : date);
|
|
|
|
/**
|
|
* Formats a Date to a string. If readable is false,
|
|
* string is only numbers (used for comparison), else
|
|
* is a human readable date.
|
|
* @param date: Date
|
|
* @param readable: boolean
|
|
*/
|
|
const formatter = (date, readable) => {
|
|
const year = date.getFullYear();
|
|
const month = addMissingZeros(date.getMonth() + 1);
|
|
const day = addMissingZeros(date.getDate());
|
|
|
|
return readable ? `${year}-${month}-${day}` : `${year}${month}${day}`;
|
|
};
|
|
|
|
/**
|
|
* Returns n (palindromesToShow) palindrome dates
|
|
* since start (or 2020-02-02)
|
|
* @param start: Date
|
|
* @param palindromesToShow: number
|
|
*/
|
|
function getPalindromeDates(start, palindromesToShow = 15) {
|
|
let date = start || new Date(2020, 3, 2);
|
|
|
|
for (
|
|
let i = 0;
|
|
i < palindromesToShow;
|
|
date = new Date(date.setDate(date.getDate() + 1))
|
|
) {
|
|
const formattedDate = formatter(date);
|
|
if (formattedDate === formattedDate.split("").reverse().join("")) {
|
|
i++;
|
|
console.log(formatter(date, true));
|
|
}
|
|
}
|
|
}
|
|
|
|
getPalindromeDates();
|