JS日期:每天或每月加0

时间:2013-02-04 11:34:35

标签: javascript date momentjs

我将此日期从api解析为字符串: DD-MM-YYYY,但有时候日期是DD-M-YYYY,甚至是D-M-YYYY。

例如:

2013年4月1日 要么 的 2013年10月10日 7-4-2013

年份总是4位数,但有时会有几天或几个月。 如何手动(使用JS)在每个数字前添加0?

我正在使用moment.js进行一些计算,因此我使用

删除' - '
date.replace("-", "")

获得一个整数(例如4-1-2013 = 412013)所以我可以将它与moment.js一起使用,但如果它是一个数字,那么一切都搞砸了。

4 个答案:

答案 0 :(得分:18)

您可以像这样首先规范化字符串:

date = date.replace(/\b(\d{1})\b/g, '0$1');

将取任何只有一位数的“字”,并在前面加零。

请注意,要全局替换每个-,您必须使用.replace的正则表达式版本 - 您使用的字符串版本仅替换第一次出现,因此:

date = date.replace(/\b(\d{1})\b/g, '0$1').replace(/-/g, '');

会做你需要的一切。

答案 1 :(得分:9)

Moment.js支持带破折号的格式,因此您甚至不需要进行任何字符串处理。

moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY");   // 04012013
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013

答案 2 :(得分:2)

如果日期变量是String格式(例如来自input[type=date]),那么您需要将数据组件拆分为单个项目。

date = date.split('-');

然后检查当天和月份的长度

day = date[0].length==1 ? "0"+date[0] : date[0];
month = date[1].length==1 ? "0"+date[1] : date[1];

然后将它们重新组合成您想要的格式

date = ""+day+month+date[2];

工作示例:http://jsfiddle.net/dzXPE/

答案 3 :(得分:0)

var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
    day = '0' + day;
}

您可以使用相同的月份。我不完全确定你需要转换成字符串,但它不会受到伤害。