从给定的长日期转换为适当的日期格式

时间:2018-04-18 06:27:08

标签: 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= "march 2018"

比,day ='' + d.getDate()应该返回空。如果日期是" 2018"比月='' +(d.getMonth()+ 1)和day ='' + d.getDate()应该返回null。我知道这是一个不好的做法,但在我的应用程序中,我需要检查日期和月份是否存在..

2 个答案:

答案 0 :(得分:1)

  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('');

答案 1 :(得分:1)

你可以使用moment.js一行完成,查看下面的jsfiddle链接

http://jsfiddle.net/rLjQx/46813/

    private Set<Long> getAllIds(List<MyClass> fetchedElements) {
        Set<Long> myIds = new HashSet<>();
        myIds.addAll(fetchedItems.stream().map(MyClass::getBlueId).collect(Collectors.toList()));
        myIds.addAll(fetchedItems.stream().map(MyClass::getRedId).collect(Collectors.toList()));
        myIds.addAll(fetchedItems.stream().map(MyClass::getGreenId).collect(Collectors.toList()));
        return myIds;
    }