我有一个这种格式的日期dd/m/yyyy
(如果月份小于10)我想要转换为此dd/mm/yyyy
,无论月份的价值是多少。
感谢。
答案 0 :(得分:2)
var date = "06/7/2011";
if(date.length == 9) {
date = date.substring(0,3)+"0"+date.substring(3);
}
alert(date);
这显然不是一个非常强大的解决方案,但如果它只是一个你需要修复的小问题,它就可以用于此目的。对于更一般的日期格式,我建议您使用JavaScript库来执行此操作,例如datejs或Date Format。
答案 1 :(得分:2)
如果你知道字符串是你发布的确切格式,这是一个简单的解决方案:
s = s.replace(/\/(\d)\//, '/0$1/');
当然,您可能需要查看d/m/yyyy
或d/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 ) + "/";
});
答案 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?