2012-03-13 35 views
1

我有一個日期選擇器,可以在表單域中生成類似於2012年6月30日的日期。如何使用javascript格式化從表單字段中提取的日期

我需要將此日期轉換爲2012-06-30 for mysql。我可以通過以下方式將其關閉。

var datePart=document.getElementById('formdate').value.split(/[^0-9]+/); 

,然後使用生成的日期。

datePart2[2] + "-" + datePart2[1] + "-" + datePart2[0] 

問題是,它紅粉我日期2012-6-30,而不是2012-06-30。

有沒有更簡單的方法來做到這一點?或者一種方法來使用我目前的方法,並且如果數字是一個數字,則在數字的前面添加一個零點?

回答

1

開源date.js(http://www.datejs.com/)提供了對JavaScript日期的真正廣泛的框架,恕我直言優於jQuery的插件。這可能比您需要的更多,但我認爲這是任何JavaScript程序員的武器庫中的一個受歡迎的補充。

要格式化你的例子:

var mySqlDate = Date.parse('6/30/2012').toString('yyyy-MM-dd'); 
+0

驚人。謝謝 – 2012-03-13 02:03:47

+1

由於只需要一種格式,因此讓訪問者加載整個庫是有點過分的。 – RobG 2012-03-13 02:46:51

0

試試這個,希望這幫助:

Format date in jquery- from Sat Mar 03 2012 14:16:05 GMT+0530 to 03/03/2012

重要的,你需要把檢查條件像這樣的如果其小於10附加0 [代碼]日期< 10? 「0」+日期:日期;乾杯!

東西本就行:

function dateFormatFoo(){ 
var d = new Date(); 
date = d.getDate(); 
date = date < 10 ? "0"+date : date; 
mon = d.getMonth()+1; 
mon = mon < 10 ? "0"+mon : mon; 
year = d.getFullYear() 
return (date+"/"+mon+"/"+year); 
} 
0

根據您的例子,一個簡單的函數是:

var formatUStoISOdate = (function() { 

    function aZ(n) { 
    return (n<10? '0' : '') + n; 
    } 

    var re = /[^0-9]/; 

    return function(d) { 
    var d = d.split(re); 
    return d[2] + '-' + aZ(d[0]) + '-' + aZ(d[1]); 

    // or 
    // return [d[2], aZ(d[0]), aZ(d[1])].join('-'); 
    } 


}()); 

alert(formatUStoISOdate('3/31/2011')); // 2011-03-31