javascript dd / m / yyyy到dd / mm / yyyy

时间:2012-01-04 16:25:47

标签: javascript

我有一个这种格式的日期dd/m/yyyy(如果月份小于10)我想要转换为此dd/mm/yyyy,无论月份的价值是多少。

感谢。

6 个答案:

答案 0 :(得分:2)

var date = "06/7/2011";

if(date.length == 9) {
    date = date.substring(0,3)+"0"+date.substring(3);
}

alert(date);

http://jsfiddle.net/sTf68/

这显然不是一个非常强大的解决方案,但如果它只是一个你需要修复的小问题,它就可以用于此目的。对于更一般的日期格式,我建议您使用JavaScript库来执行此操作,例如datejsDate Format

答案 1 :(得分:2)

如果你知道字符串是你发布的确切格式,这是一个简单的解决方案:

s = s.replace(/\/(\d)\//, '/0$1/');

当然,您可能需要查看d/m/yyyyd/mm/yyyy

在这种情况下,另一个选择是:

s = s.replace(/\b\d\b/g, '0$&');

同样,假设日期是整个字符串,而不是部分字符串。模式如下:

  • \b\d\b - 一个整数字的数字(由非字母数字字符或字符串边缘包裹)
  • /g - 全球替换,因为我们可能有两场比赛。
  • 0$& - 在整场比赛中加零。

答案 2 :(得分:1)

试试这个:

function normalizeDate(input) {
  var parts = input.split('/');
  return (parts[0] < 10 ? '0' : '')
    + parseInt(parts[0]) + '/'
    + (parts[1] < 10 ? '0' : '')
    + parseInt(parts[1]) + '/'
    + parseInt(parts[2]);
}

alert(normalizeDate('2/3/2000')); //alerts "02/03/2000"
alert(normalizeDate('12/11/2000')); //alerts "12/11/2000"
alert(normalizeDate('12/7/2000')); //alerts "12/07/2000"

正如您所看到的,此功能会在前两个数字中添加0,而不仅仅是第二个数字。

答案 3 :(得分:0)

var month = "00";

if (month < 10) month = "0" + month;

答案 4 :(得分:0)

"12/9/2011".replace( /\/(\d\d?)\//, function( a, month ) {
    return "/" + ( parseInt( month, 10 ) < 10 ? "0" + month : month ) + "/";
});

http://jsfiddle.net/pjTGh/

答案 5 :(得分:0)

JavaScipt Date API有点痛苦。我会.split('/')得到dd,m和yyy。作为字符串。然后使用parseInteger(x,10)从中生成数字(需要10,因此将09个月视为小数9而不是无效的8进制9)。然后你可以从那里制作一个新的填充字符串。 (或者一个新的日期() - 但要注意,日期和月份都是基于0的!)。

不幸的是,如果要将Date格式化为字符串,则需要自己进行填充。参见例如Formatting Javascript string to have 03 not 3?