【问题标题】:Converting to appropriate date format from a given long date从给定的长日期转换为适当的日期格式
【发布时间】:2018-04-18 06:27:08
【问题描述】:

我有一个类似格式的日期 -

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() 应该返回空。如果 date 是“2018”,则 month = '' + (d.getMonth() + 1) 和 day = '' + d.getDate() 应该返回 null。我知道这是一种不好的做法,但在我的应用程序中,我需要检查日期和月份是否存在。

【问题讨论】:

    标签: javascript angular ecmascript-6


    【解决方案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('');
    

    【讨论】:

    • 但 if(Number(sp_date[0])=== true) 中有错误。它的说法“===”不能应用于类型数字和布尔
    • 我把它改成了 if(Number(sp_date[0])) ,它工作正常
    【解决方案2】:

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

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

    var date = moment("2 march 2018").format('YYYYMMDD');
    

    【讨论】:

    • 对于输入“march 2918”,结果仍然是 20180301
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2019-08-23
    • 1970-01-01
    • 2018-08-03
    • 2023-03-30
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多