Palindrome dates: Difference between revisions

no edit summary
(→‎{{header|AppleScript}}: Added subheadings)
No edit summary
Line 854:
date = 2130-03-12
date = 2140-04-12
</pre>
 
=={{header|Javascript}}==
<lang 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 palidromeDates(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));
}
}
}
 
palidromeDates();
 
</lang>
{{Out}}
<pre>
2021-12-02 ​
2030-03-02 ​
2040-04-02 ​
2050-05-02 ​
2060-06-02 ​
2070-07-02 ​
2080-08-02 ​
2090-09-02
2101-10-12 ​
2110-01-12 ​
2111-11-12 ​
2120-02-12​
2121-12-12 ​
2130-03-12 ​
2140-04-12 ​
</pre>