Search code examples
javascriptdatelocaledate-parsing

Native method to inverse Date.toLocaleString convertion in JavaScript?


We have date converted to locale string. For example:

x = (new Date()).toLocaleString()

and x has value

"20.05.2018, 10:21:37"

How to process this string to Date object.

I was tried

new Date(x)
Invalid Date

and

Date.parse(x)
NaN

It is possible and simple to do without external libraries like moment.js?


Solution

  • You can parse it on your own.

    const date = "20.05.2018, 10:21:37";
    const [first, second] = date.split(',').map(item => item.trim());
    const [day, month, year] = first.split('.');
    const [hours, minutes, seconds] = second.split(':');
    
    const newDate = new Date(year, month - 1, day, hours, minutes, seconds);
    console.log(newDate);

    Or using regex

    const date = "20.05.2018, 10:21:37";
    const m = /^(\d{2})\.(\d{2})\.(\d{4}), (\d{2}):(\d{2}):(\d{2})$/.exec(date);
    const newDate = new Date(m[3], m[2] - 1, m[1], m[4], m[5], m[6]);
    console.log(newDate);