如何使用javascript格式化从表单字段中提取的日期

时间:2012-03-13 01:28:04

标签: javascript date datepicker

我有一个日期选择器,可以在表单字段中生成类似于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。

有更简单的方法吗?或者一种使用我当前方法的方法,如果它是一个数字,则在数字的前面加零;

4 个答案:

答案 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吗?如果是这样,你可以使用日期格式插件,使日期操作变得容易

http://archive.plugins.jquery.com/project/jquery-dateFormat

答案 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