Home > Enterprise >  invalid date when trying to change the date format
invalid date when trying to change the date format

Time:07-07

I have a date value and want to format it.

This is the value:

Thu Jul 07 2022 01:03:18 GMT 0200 (Mitteleuropäische Sommerzeit) 

I want to make this format:

console.log(new Date('YYYY-MM-DD h:i:s', dateVal));

but I get invalid date.

How can I make it right ?

CodePudding user response:

The Date constructor takes only one argument, you can't format a date using it. Do you want exact format you've shown in your question or an ability to use any arbitrary date format? For the first option, the simplest way I see so far is:

let dateVal = 'Thu Jul 17 2022 01:03:18 GMT 0200 (Mitteleuropäische Sommerzeit)';
let dateObj = new Date(dateVal);
let dateISO = dateObj.toISOString()
let dateFmt = dateISO.slice(0, 10)   ' '   dateISO.slice(11, 19)
console.log(dateFmt)

CodePudding user response:

Though the Date object's constructor accepts a handful of parameters to set an actual date, there is no parameter to specify in what way the date should be presented.

So:

let dateVal="Thu Jul 07 2022 01:03:18 GMT 0200 (Mitteleuropäische Sommerzeit)";
console.log(new Date('YYYY-MM-DD h:i:s', dateVal));

is nonsense as it tries to construct a date from two strings.

What you can do however is call the Date's built-in function .toLocaleString() including the "sv" locale to get your Date formatted in YYYY-MM-DD h:i:s format.

For example:

let dateVal = "Thu Jul 7 2022 01:03:18 GMT 0200 (Mitteleuropäische Sommerzeit)";
console.log(new Date(dateVal).toLocaleString("sv"))

  • Related