javascript dd/m/yyyy to dd/mm/yyyy



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

谢谢。

如果您知道字符串的格式与您发布的格式完全相同,这里有一个简单的解决方案:

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

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

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

s = s.replace(/bdb/g, '0$&');

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

  • bdb - 作为整个单词的数字(由非字母数字字符或字符串边缘换行(
  • /g - 全局替换,因为我们可能有两场比赛。
  • 0$& - 为整个匹配项添加一个零。
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 库来执行此操作,例如 datejs 或 Date Format。

试试这个:

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,而不仅仅是第二个数字。

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

JavaScipt Date API 有点痛苦。我会 .split('/'( 来获取 dd、m 和 yyy。作为字符串。然后使用 parseInteger(x, 10( 从中生成数字(需要 ,10,以便将月份 09 视为十进制 9 而不是无效的八进制 9(。然后,您可以从那里创建一个新的填充字符串。(或新的 Date(( - 但要注意,日和月是从 0 开始的!

不幸的是,如果要将日期格式化为字符串,则需要自己进行填充。例如,请参阅格式化Javascript字符串以具有03而不是3?

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

http://jsfiddle.net/pjTGh/

相关内容

最新更新