2011-03-24 49 views
5

我知道在javascript中使用dateString参数构造Date对象时,该字符串必须是parse()可识别的内容。JavaScript的解析会识别什么字符串日期格式?

什么日期格式parse可以识别?

例如:

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

作品在Chrome和Internet Explorer,但无法在iPhone上(返回1970年1月1日)。

我找不到关于.parse()方法或构造函数关于参数应该是什么的任何正式文档。

格式yyyy-mm-ddThh:nn:ss不起作用。什么允许的格式字符串?

回答

11

MDC documentation of Date.parse()状态(引用)

它接受IETF标准RFC 1123第5.2.14和其他地方) 日期语法:
"Mon, 25 Dec 1995 13:30:00 GMT"


OP编辑:

.NET语法来创建这个日期字符串:

/* 
* 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 

编辑:r(RFC1123模式)总是附加“GMT “,尽管时间不是格林尼治标准时间(当地时间)。您需要先致电.ToUniversalTime(),以便让时间实际上是是GMT。

+0

+1这是应该工作无论发生什么:)格式。 – kapa 2011-03-24 11:56:31

0

使用由Date的toJSON方法生成的格式将工作。这与toIOSString方法相同。

日期格式为YYYY-MM-DDTHH:MM:ss.sssZ

注:时区总是UTC所表示由后缀 “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())); 

您可能会发现显示的日期与您的时钟不同;记住时区是UTC。

参考文献:

Date.prototype.toJSON()

Date.prototype.toISOString()