2012-06-23 56 views
0

我有兩個日期:更改日期格式

var first = '21-11-2012'; 
var second = '03-11-2012'; 

什麼是格式化像這樣的最佳方式:

var first = '2012-11-21'; 
var second = '2012-11-03'; 

我應該使用jQuery或乾脆JavaScript的?

+0

下面是一個回答此問題的問題。 [http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript][1] [1]:http://stackoverflow.com/questions/ 1056728/formatting -a-date-in-javascript – xivo

回答

5

你不需要jQuery的這一點,只需使用JavaScript像這樣:

function formatDate(d){ 
    return d.split('-').reverse().join('-'); 
} 

但如果你想要更多的可重用代碼考慮使用JavaScript Date Object

+1

不會因爲刪除多餘的'parts ='而簡化這個操作。 – nnnnnn

+0

非常真實,更新! –

+0

這麼幹淨和完美的方式:) +1 – Jashwant

1
first=first.split("-").reverse().join("-") 
second=second.split("-").reverse().join("-") 
2

沒有必要考慮jQuery的基本字符串處理:standard JS String methods綽綽有餘,這(我認爲)是爲什​​麼jQuery實際上沒有等效的方法。

正則表達式.replace()或其他答案中的split/reverse/join概念都可以在一行中完成。我建議你逐漸熟悉在MDN頁我聯繫到的方法,但與此同時:

first = first.replace(/^(\d\d)-(\d\d)-(\d\d\d\d)$/,"$3-$2-$1"); 

(同爲second - 如果需要封裝在一個函數)。

它使用正則表達式匹配日期的不同部分並將其反轉。

更新 - 按照要求,正則表達式的解釋我用:

^   // match beginning of string 
(\d\d)  // match two digits, and capture them for use 
      // in replacement expression as $1 
-   // match the literal hyphen character 
(\d\d)  // match two digits, and capture for use as $2 
-   // match the literal hyphen character 
(\d\d\d\d) // match four digits, and capture for use as $3 
$   // match end of string 

因爲模式從開始到比賽結束串整串將被替換。如果在替換字符串中使用括號中的表達式的部分是「被捕獲的」並且可以被稱爲$ 1,$ 2等(按它們在表達式中出現的順序編號),所以"$3-$2-$1"反轉這些被捕獲的片斷的順序並在它們之間放置連字符。 (如果輸入字符串不符合該格式,正則表達式將不匹配,並且不會進行替換。)

+0

你可以添加幾行解釋你的正則表達式嗎?這肯定會幫助像我這樣的人 – Jashwant

+0

@Jashwant - 完成。 – nnnnnn

+0

'('和')'捕獲以備後用? – Jashwant