Is there a way to reformat a date using .replace and a regex? or a series of them?
for example I would like to turn May 4, 1981 into 1981-May-04... this would be good enough for my needs.
but even better would be to turn May 4, 1981 into 1981-05-04.
please note that single digit months and dates need to be changed to double digit (i.e. prefix a 0). The source text May 4, 1981 would not contain a leading 0 for the day ever.
the end result YYYY-MM-DD being sortable, which is why the leading 0 is important.
new Date('May 4, 1981').toLocaleDateString('en-CA')
outputs
'1981-05-04'
Alternatives:
const date = new Date('May 4, 1981');
function getMyFormat(date) {
return [
date.getFullYear(),
date.getMonth().toString().padStart(2, '0'),
date.getDay().toString().padStart(2, '0')
].join('-');
}
console.log(getMyFormat(date))
new Date(date).toISOString().split('T')[0]
It spits out a long string where, before the 'T', the format is YYYY-MM-DD.
There are some caveats to this, however, as it puts the date in the UTC timezone, which could affect your setup.
There is, however, an easy way to handle this:
new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000).toISOString().split('T')[0]
Over here, we calculate the timezone offset with respect to UTC so it should help you get the format you need.