2011-03-24 50 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()