2012-08-09 74 views
0

我想一個轉換日期從MM/DD/YYYY JavaScript來YYYY/MM/DDJavaScript的日期字符串

所以這個工作

var d = new Date("08/08/2012"); 
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate(); 
document.write(dateString); 

輸出= 2012/7/8

/////////////////////// ////////

這就是不是

var dateString = "08/08/2012"; 
var d = new Date(dateString); 
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate(); 
document.write(dateString); 

沒有做到這一點

var dateString = "08/08/2012"; 
var d = Date.parse(dateString); 
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate(); 
document.write(dateString); 

我怎麼使它與一個字符串變量工作?感謝

〜MYY

+0

瀏覽器的控制檯在嘗試執行不起作用的代碼時記錄什麼? – Jordan 2012-08-09 20:22:15

+0

你是說你*要* 2012年8月8日打印爲2012/7/8(即月份從08變爲7)? – 2013-02-28 00:35:46

+0

不,我在使用字符串變量vs新的Date()函數時遇到問題。 – Myy 2013-03-02 17:22:42

回答

5
var dateString = "08/08/2012"; 
var d = new Date(dateString); 
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate(); 
document.write(dateString); 

應,and does,工作。請記住,JavaScript將月份存儲爲零索引值。

如果你想有前導零,那麼你就必須做一些法寶:

var dateString = "08/08/2012"; 
var d = new Date(dateString); 
dateString = d.getFullYear() + "/" + ('0' + (d.getMonth()+1)).slice(-2) + "/" + ('0' + d.getDate()).slice(-2); 
document.write(dateString);​ 

jsFiddle

爲什麼你Date.parse()例如不工作的原因,是因爲該函數返回一個時間戳(1970年以來的毫秒數),而不是Date對象。因此,您不能在時間戳上調用諸如getFullYear()之類的函數。

+0

百萬美元的問題是爲什麼'Date.parse'不起作用。 – 2012-08-09 20:24:11

+1

@Nick'Date.parse'不起作用,但它不返回一個Date對象。它返回一個時間戳。 – Quantastical 2012-08-09 20:27:20

+0

我發誓我一次又一次地嘗試了第二種方法,但它沒有奏效,現在我又試了一次。我想我錯過了一些東西,感謝您的快速反應! – Myy 2012-08-09 20:33:27

4

如果你需要做的是重新排序的值,你可以這樣做:

var dateString = "08/08/2012"; 
var dateElements = dateString.split("/"); 
var outputDateString = dateElements[2] + "/" + dateElements[0] + "/" + dateElements[1]; 
document.write(outputDateString); 
+0

+1簡單 – 2012-08-09 20:32:41

+0

這工作太。謝謝 – Myy 2012-08-09 20:36:06

1

我可以MrSlayer確認代碼工作中的jsfiddle。

您嘗試使用Date.parse()應該實際使用Date(String(dateString))

不要忘記每月增加1個。