2016-06-09 141 views
0

我有一個從php中檢索的變量,存儲在一個名爲activity.ActivityDate的變量中。當我做一個將字符串日期轉換爲日期對象

console.log(activity.ActivityDate); 

它輸出14/06/2016,這是可被轉化爲一個日期對象的有效格式。但是當我做

d = new Date(activity.ActivityDate); 
console.log(d); 

我得到一個無效的日期。但是當我做

e = new Date('14/06/2016'); 
console.log(e); 

我確實得到一個適當的日期對象。

我的activity.ActivityDate字符串有什麼問題,或者有什麼方法將它變成合適的字符串?

+1

如何:'當d =新日期(activity.ActivityDate.toString());' – Hackerman

+1

在'日期的datestring()'構造期望一個特定的格式,它可以依賴於瀏覽器。例如,雖然未在Chrome中定義「MM/DD/YYYY」,但「DD/MM/YYYY」爲。你最好分割字符串中的值,並將它們作爲整數放在'new Date(year,month [,day [...)''的適當字段中。 –

+0

@Hackerman仍然無效日期 – Lester

回答

3

不同的瀏覽器可以用不同的方式解析日期字符,正如MDN所指出的那樣,它不鼓勵使用Date()構造函數來解析日期字符串。在你的情況下,你的格式爲DD/MM/YYYY,但它可能是你的瀏覽器預計MM/DD/YYYY

注意:由於瀏覽器的差異和不一致性,強烈建議不要使用Date構造函數(和Date.parse,它們是等價的)解析日期字符串。

最好的辦法這樣做,它會在所有的瀏覽器將灑您的字符串通過"/"和轉換您的數字爲整數使用構造格式爲Date(year, month, day)構造函數。

例如:

var date = '14/06/2016'; 
 
var items = date.split('/'); 
 
var day = +items[0];   // Note +(item) means convert to interger 
 
var month= +(items[1] - 1);  // month goes from 0-11 rather than 1-12. 
 
var year = +items[2]; 
 
e = new Date(year, month, day); 
 
console.log(e);