What string date format will javascript's pars

2019-04-08 16:23发布

问题:

i know when constructing a Date object in javascript with a dateString parameter, the string must be something that parse() can recognize.

What date format can parse recognize?

For example:

var postDate = new Date("2011-03-08T23:52:38");

works in Chrome and Internet Explorer, but fails on an iPhone (returns Jan 1, 1970).

i cannot find any formal documentation on the .parse() method, or the constructor, about what the parameter should be.

The format yyyy-mm-ddThh:nn:ss doesn't work. What is the allowed format string?

回答1:

The MDC documentation of Date.parse() states (quoting) :

It accepts the IETF standard (RFC 1123 Section 5.2.14 and elsewhere) date syntax:
"Mon, 25 Dec 1995 13:30:00 GMT".


OP Edit:

.NET syntax to create this datetime string:

/*
 * r (RFC1123Pattern)
 *      ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
 *      Mon, 15 Jun 2009 20:45:30 GMT
 */
dateTime.ToUniversalTime().ToString("r", CultureInfo.InvariantCulture); //"r" = RFC1123Pattern

Edit: The r (RFC1123 pattern) always appends "GMT", even though the time isn't GMT (it's local). You need to call .ToUniversalTime() first, in order to have the time actually be GMT.



回答2:

Using the format that is produced by Date's toJSON method will work. This is the same as the toIOSString method.

The date format is YYYY-MM-DDTHH:mm:ss.sssZ

Note: The timezone is always UTC as denoted by the suffix "Z".

var d = new Date();
console.log(d.toJSON());
console.log(d.toJSON() === d.toISOString());
console.log(Date.parse(d.toJSON()) === Date.parse(d.toISOString()));

You may find that the date shown isn't the same as on your clock; remember the timezone is UTC.

References:

Date.prototype.toJSON()

Date.prototype.toISOString()