Javascript JS日期:在每一天或每月的前面添加0

Javascript JS日期:在每一天或每月的前面添加0,javascript,date,momentjs,Javascript,Date,Momentjs,我将此日期从api解析为字符串: DD-MM-YYYY,但有时日期是DD-M-yyy,甚至是D-M-YYYY 例如: 4-1-2013 或 10-10-2013 或7-4-2013 年份总是4位数,但天或月有时是一位数如何手动(使用JS)在每一位数字前添加0? 我使用moment.js进行一些计算,因此我使用 date.replace("-", "") 获取一个整数(例如4-1-2013=412013),这样我就可以将它与moment.js一起使用,但如果它是一个位数,那么它就会变得一团糟。v

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

例如:

4-1-201310-10-20137-4-2013

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

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

date.replace("-", "")
获取一个整数(例如4-1-2013=412013),这样我就可以将它与moment.js一起使用,但如果它是一个位数,那么它就会变得一团糟。

var day=new Date();
var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
    day = '0' + day;
}
day=day.getDay();
如果(day.toString().length如果日期变量是字符串格式(例如从
输入[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];

工作示例:

您可以先将字符串标准化,如下所示:

date = date.replace(/\b(\d{1})\b/g, '0$1');
它将接受任何一个仅为一位数的“单词”,并在其前面加上一个零

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

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

将完成您需要的所有操作。

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

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

它可以工作,因为我得到的日期是字符串。你不能定义day.getDay()。想象一下7-4-2013是一个单词。你能详细说明它是如何变得“混乱”的吗?矩.js API支持这些格式。如果你给它:
矩('4-1-2013',D-M-YYYY')
它将解释为2013年1月4日。