我有一个日期选择器,可以在表单字段中生成类似于6/30/2012的日期。
我需要将此日期转换为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。
有更简单的方法吗?或者一种使用我当前方法的方法,如果它是一个数字,则在数字的前面加零;
答案 0 :(得分:1)
开源date.js(http://www.datejs.com/)为JavaScript日期提供了一个非常广泛的框架,IMHO优于jQuery插件。它可能比您需要的更多,但我认为它是任何JavaScript程序员的武器库中的一个受欢迎的补充。
格式化您的示例:
var mySqlDate = Date.parse('6/30/2012').toString('yyyy-MM-dd');
答案 1 :(得分:0)
您使用的是jQuery吗?如果是这样,你可以使用日期格式插件,使日期操作变得容易
答案 2 :(得分:0)
试试这个,希望得到这个帮助:
Format date in jquery- from Sat Mar 03 2012 14:16:05 GMT+0530 to 03/03/2012
重要的是你需要设置一个像这样的检查条件,如果它少于10个追加0 [code] date< 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);
}
答案 3 :(得分: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