What string date format will javascript's pars

2019-04-08 16:48发布

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?

2条回答
可以哭但决不认输i
2楼-- · 2019-04-08 17:11

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()

查看更多
混吃等死
3楼-- · 2019-04-08 17:16

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)
 *      ffffd, 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.

查看更多
登录 后发表回答