Javascript 从给定的长日期转换为适当的日期格式
我有一个这样的约会-Javascript 从给定的长日期转换为适当的日期格式,javascript,angular,ecmascript-6,Javascript,Angular,Ecmascript 6,我有一个这样的约会- date= "2 march 2018" 我想把它转换成“20180302”格式。为此,我使用以下方法: var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); return [year, month, day].join(''); 一切正常,只是如果我的日期没有日期或月份,它应该返回空值来代
date= "2 march 2018"
我想把它转换成“20180302”格式。为此,我使用以下方法:
var d = new Date(date),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
return [year, month, day].join('');
一切正常,只是如果我的日期没有日期或月份,它应该返回空值来代替日期和月份。例如:如果我的日期输入为
date= "march 2018"
然后,day=''+d.getDate()应返回空。如果日期为“2018”,则月份=“”+(d.getMonth()+1)和日期=“”+d.getDate()应返回null。我知道这是一个糟糕的做法,但在我的申请中,我需要检查日期和月份是否存在 您可以使用moment.js使用一行代码来完成,请查看下面的JSFIDLE链接
var date= "2 march 2018";
var sp_date=date.split(" ");
var d = new Date(date);
if(sp_date.length==3){
month = '' + (d.getMonth() + 1);
day = '' + d.getDate();
year = d.getFullYear();
}else if(sp_date.length==2){
if(isNaN(Number(sp_date[0]))===false){
day = sp_date[0];
month='';
year=sp_date[1];
}else{
day ='';
month = '' + (d.getMonth() + 1);
year = d.getFullYear();
}
}else if(sp_date.length==1){
day ='';
month = '';
year = d.getFullYear();
}
return [year, month, day].join('');
对于输入“march 2918”,结果仍然是20180301,但if(数字(sp_日期[0])==true)中存在错误。它的说法“==”不能应用于数字类型,booleanI将其更改为if(数字(sp_日期[0]),其工作正常
var date = moment("2 march 2018").format('YYYYMMDD');