I have a string representing the current time: 2015-11-24T19:40:00
. How do I parse this string in Javascript to get a Date represented by this string as the LOCAL TIME? Due to some restriction, I cannot use the library moment
, but jquery is allowed. I know that someone has asked this question before, but the answer used moment
For example, if I run the script in California, then this string would represent 7PM pacific time, but if I run the script in NY then this string would represent Eastern Time?
I tried the following but Chrome and Firefox give me different results:
var str = "2015-11-24T19:40:00"; var date = new Date(str);
Chrome consumes it as UTC time (Tue Nov 24 2015 11:40:00 GMT-0800 (Pacific Standard Time)
),
but Firefox consumes it as my local PACIFIC time (Tue Nov 24 2015 19:40:00 GMT-0800 (Pacific Standard Time)
)
I tried adding "Z" to str
, like this var date = new Date(str+"Z");
, then both browsers give me UTC time. Is there any similar letter to "Z"
which tells all browsers (at least chrome, Firefox and Safari) to parse the string as local time zone?
Use the Date() constructor to convert a string to a Date object, e.g. const date = new Date('2022-09-24') . The Date() constructor takes a valid date string as a parameter and returns a Date object. Copied! We used the Date() constructor to convert a string to a Date object.
To convert dd/mm/yyyy string into a JavaScript Date object, we can pass the string straight into the Date constructor. const dateString = "10/23/2022"; const dateObject = new Date(dateString);
Yes, the time returned by the new Date() expression doesn't consider timezone issues, only when it is converted to a string. My timezone is GMT-0200. As we can see, the time returned does not consider the timezone.
Parsing of date strings using the Date constructor or Date.parse (which are essentially the same thing) is strongly recommended against.
If Date is called as a function and passed an ISO 8601 format date string without a timezone (such as 2015-11-24T19:40:00), you may get one of the following results:
A Date object has a time value which is UTC, and an offset based on system settings. When you send a Date to output, what you see is usually the result of Date.prototype.toString, which is an implementation dependent, human readable string representing the date and time, usually in a timezone based on system settings.
The best way to parse date strings is to do it manually. If you are assured that the format is consistent and valid, then parsing an ISO format string as a local date is as simple as:
/* @param {string} s - an ISO 8001 format date and time string ** with all components, e.g. 2015-11-24T19:40:00 ** @returns {Date} - Date instance from parsing the string. May be NaN. */ function parseISOLocal(s) { var b = s.split(/\D/); return new Date(b[0], b[1]-1, b[2], b[3], b[4], b[5]); } document.write(parseISOLocal('2015-11-24T19:40:00'));
Note that parsing of ISO strings using Date.parse only accepts UTC, it does not accept any other timezone designation (noting the above behaviour if it's missing).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With