我将此日期从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一起使用,但如果它是一个数字,那么一切都搞砸了。
答案 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];
答案 3 :(得分:0)
var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
day = '0' + day;
}
您可以使用相同的月份。我不完全确定你需要转换成字符串,但它不会受到伤害。