2013-12-17 126 views
1

我想(並失敗!)格式化我的日期輸出使用JavaScript,所以我要求一些幫助。Javascript來格式化日期值

日期格式爲2013-12-31(yyyy-mm-dd),但我想將日期顯示爲12-2013(mm-yyyy)。

我已經閱讀了很多文章,但我現在只是困惑。

這裏是調用javascript函數:

changeDateFormat($('#id_award_grant_date').val()), 

這裏是JavaScript函數:

function changeDateFormat(value_x){ 


} 
+1

斯普利特'在部分日期 - '再加入部分,只要你喜歡。 – elclanrs

+2

它可能是矯枉過正的你想實現,但我真的很喜歡JavaScript日期庫Moment.js http://momentjs.com/docs/#/parsing/string-format/ –

回答

4

你有什麼是隻是一個字符串,所以就分開,並把它以想要的格式返回到一起

var date  = '2013-12-31', 
    parts = date.split('-'), 
    new_date = parts[1]+'-'+parts[0]; 

FIDDLE

+0

謝謝!當你不是像我這樣的新手時很容易! – user1261774

+0

像我這樣一個懶惰的程序員會這樣做:'[parts [1],parts [0]]。join(「 - 」);'如果你有很多項目要合併。 –

+0

@ user1261774 - 希望這不是日期選擇器?如果它應該使用某些內置方法代替。 – adeneo

3
var d = '2013-12-31' 
var yyyymmdd = d.split('-') 
var mmyyyy = yyyymmdd[1]+'-'+yyyymmdd[0]; // "12-2013" 
1

你可以用splitjoin來做到這一點。

var yyyymmdd = '2013-12-31'.split('-'), 
    mmyyyy = [ yyyymmdd[1], yyyymmdd[0] ].join('-'); 

console.log('The date is: ', mmyyyy); 
1
function changeDateFormat(str) { 
    var reg = /(\d+)-(\d+)-(\d+)/; 
    var match = str.match(reg); 
    return match[2] + "-" + match[1]; 
} 

http://jsfiddle.net/wZrYD/

+1

好東西,這裏的正則表達式解決方案是唯一的解決方案,甚至試圖驗證輸入是數字。我設法減少它在功能使用正則表達式中的一行替換http://jsfiddle.net/wZrYD/2/ –

+1

我從你的更新中學到了很多:1.strict validate 2.replace()更優雅(我的解決方案是醜陋的)。感謝您的反饋@MatthewLock :) –