I am trying to create a date object from a string. I get date in ISO format except milliseconds part like "2012-01-30T16:23:12"
Results differ when I run following code in IE, Chrome and Firefox (Link to Fiddle)
currentDate = "2012-01-30T16:23:12";
var date = new Date(currentDate);
alert(date);
IE and Chrome considers the string as UTC but firefox considers in local time zone.
Is there any generic way to get around it except for checking user agent everywhere?
You could try appending the zero timezone offset
+00:00
for UTC:Does that help? (Sorry I can't test it without actually changing my timezone.)
There is no guarantee that the input will be correctly parsed if in the present format. The Date.parse() routine is only required to parse strings in a particular format—parsing other formats is implementation-dependent. If you dare to rely on implementations satisfying the requirement, add data to conform to the specific format:
Alternatively, use a library that can parse data in the current format, e.g. jQuery or Globalize.js.
Similar considerations apply to writing dates. There is no guarantee of the output format if you use
Date.toString()
, either explicitly or as inalert(date)
. Even within a single computer, different browsers will use different localized formats.Hm, possible workaround is to parse string and use methods.
Probably, there is better solution