我有一个格式为dd/m/yyyy的日期(如果月份小于10),我想将它转换为这个dd/mm/yyyy,而不管月份的值是什么。
谢谢。
发布于 2012-01-05 00:34:27
如果您知道字符串的格式与您发布的完全相同,这里有一个简单的解决方案:
s = s.replace(/\/(\d)\//, '/0$1/');当然,您可能需要检查d/m/yyyy或d/mm/yyyy。
在这种情况下,另一种选择是:
s = s.replace(/\b\d\b/g, '0$&');同样,假设日期是整个字符串,而不是部分字符串。模式是这样写的:
\b\d\b -整个单词的数字(由非字母数字字符或string)/g的边缘包围)-全局替换,因为我们可能有两个matches.0$& -在整个匹配中添加一个零。发布于 2012-01-05 00:30:08
var date = "06/7/2011";
if(date.length == 9) {
date = date.substring(0,3)+"0"+date.substring(3);
}
alert(date);http://jsfiddle.net/sTf68/
这显然不是一个非常健壮的解决方案,但如果它只是一个你需要解决的小问题,它就可以达到这个目的。对于更一般的日期格式,我建议您使用像datejs或Date Format这样的JavaScript库来实现。
发布于 2012-01-05 00:34:29
试试这个:
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,而不仅仅是第二个数字。
https://stackoverflow.com/questions/8730200
复制相似问题