Question
How can I convert a string to a Date object in JavaScript?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
Answer
The best string format for string parsing is the date ISO format together with the JavaScript Date object constructor.
Examples of ISO format: YYYY-MM-DD
or YYYY-MM-DDTHH:MM:SS
.
But wait! Just using the "ISO format" doesn't work reliably by itself. String are sometimes parsed as UTC and sometimes as localtime (based on browser vendor and version). The best practice should always be to store dates as UTC and make computations as UTC.
To parse a date as UTC, append a Z - e.g.: new Date('2011-04-11T10:20:30Z')
.
To display a date in UTC, use .toUTCString()
,
to display a date in user's local time, use .toString()
.
More info on [MDN | Date](https://developer.mozilla.org/en- US/docs/JavaScript/Reference/Global_Objects/Date) and this answer.
For old Internet Explorer compatibility (IE versions less than 9 do not
support ISO format in Date constructor), you should split datetime string
representation to it's parts and then you can use constructor using datetime
parts, e.g.: new Date('2011', '04' - 1, '11', '11', '51', '00')
. Note that
the number of the month must be 1 less.
Alternate method - use an appropriate library:
You can also take advantage of the library Moment.js that allows parsing date with the specified time zone.