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

How to format a date pulled from a form field with javascript

本文关键字:提取 日期 字段 表单 何使用 javascript 格式化      更新时间:2023-09-26

我有一个日期选择器,它在表单字段中生成一个日期,如2012年6月30日。

我需要将此日期转换为mysql的2012-06-30。我可以通过以下内容来接近它。

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

然后使用生成日期。

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

问题是它给我的日期是2012-6-30,而不是2012-06-30。

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

开源日期.js(http://www.datejs.com/)为JavaScript日期提供了一个非常广泛的框架,IMHO优于jQuery插件。它可能超出了您的需求,但我认为它是任何JavaScript程序员武器库中的一个受欢迎的补充。

格式化示例:

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

您在使用jQuery吗?如果是这样的话,你可以使用日期格式插件,使日期操作变得容易

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

试试这个,希望能有所帮助:

在jquery中设置日期格式-从2012年3月3日星期六14:16:05 GMT+0530到2012年03月3日

重要的是,你需要设置一个像这样的检查条件,如果它小于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);
}

根据您的示例,一个简单的函数是:

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