首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript dd/m/yyyy到dd/mm/yyyy

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

Stack Overflow用户
提问于 2012-01-05 00:25:47
回答 6查看 1.3K关注 0票数 1

我有一个格式为dd/m/yyyy的日期(如果月份小于10),我想将它转换为这个dd/mm/yyyy,而不管月份的值是什么。

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-05 00:34:27

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

代码语言:javascript
复制
s = s.replace(/\/(\d)\//, '/0$1/');

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

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

代码语言:javascript
复制
s = s.replace(/\b\d\b/g, '0$&');

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

  • \b\d\b -整个单词的数字(由非字母数字字符或string)
  • /g的边缘包围)-全局替换,因为我们可能有两个matches.
  • 0$& -在整个匹配中添加一个零。
票数 3
EN

Stack Overflow用户

发布于 2012-01-05 00:30:08

代码语言:javascript
复制
var date = "06/7/2011";

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

alert(date);

http://jsfiddle.net/sTf68/

这显然不是一个非常健壮的解决方案,但如果它只是一个你需要解决的小问题,它就可以达到这个目的。对于更一般的日期格式,我建议您使用像datejsDate Format这样的JavaScript库来实现。

票数 2
EN

Stack Overflow用户

发布于 2012-01-05 00:34:29

试试这个:

代码语言:javascript
复制
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,而不仅仅是第二个数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8730200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档