JS日期:每天或每月加0

Cly*_*deM 11 javascript date momentjs

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

例如:

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

年份始终为4位数,但有时甚至数天或数月.如何手动(使用JS)在每个数字前添加0?

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

date.replace("-", "")
Run Code Online (Sandbox Code Playgroud)

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

Aln*_*tak 18

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

date = date.replace(/\b(\d{1})\b/g, '0$1');
Run Code Online (Sandbox Code Playgroud)

这将取任何只是一位数的"单词"并且前置零.

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

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

将做你需要的一切.


tim*_*ood 9

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

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