【问题标题】:Is it possible to detect different type of date in javascript?是否可以在 javascript 中检测不同类型的日期?
【发布时间】:2021-12-21 16:20:14
【问题描述】:

这个字符串:

const date = "31/12/2020";

如果转换为日期,将给出“无效日期”:

const asDate = new Date(date);  
console.log(asDate);

上面的日期是用字符串表示的美式日期。 javascript是否有机会理解以不同样式编写的日期? 所以基本上这些:

    const date2 = "31/12/2020";
    const date = "2020-12-31";

两者会给出相同的日期吗?

【问题讨论】:

  • 您是否尝试过使用 MomentJS 来处理日期的解析和格式化?
  • "上面的日期是用字符串表示的美式日期。" 不,不是。美式字符串为12/31/2021。话虽如此,在任何一种情况下,它都不是标准字符串,因此您会获得依赖于实现的行为。日期 可能 被解析为有效(无论您实际表示的日期是否不是必需的),它 可能 也只是失败。请参阅What are valid Date Time Strings in JavaScript? - 只有“2020-12-31”是有效的符合标准的字符串,将被明确解释。
  • @SidBarrack 不,这完全不相关。您作为重复提出的问题询问您是否已经有一个日期对象,如何将其格式化为日期字符串。如果你有一个日期字符串,如何正确地将其解析为日期对象,这就是这个问题所要问的。
  • 这能回答你的问题吗? Opposite method to toLocaleDateString

标签: javascript


【解决方案1】:

你可以这样尝试,注意NOTE部分。

const date = "31/12/2020";
    //const date = "2020-12-31";
   
    var year,month,day;
    if(date.indexOf("/") > -1){
    // If you date string has "/" in then it will come in this conditon 

     const ConvertDate = date.split("/");
      ConvertDate.forEach((element, index) => {

      // ***********NOTE**************

      //Here condition can fail, 
      //If you know date will be DD/MM/YYYY format the you can directly split and assign them to variables like day = ConvertDate[0], month = ConvertDate [1], year = ConvertDate[2] 

      if(element.length == 4){
        year = element;        
        } else if(element.length == 2 && element > 12){
        day = element;
        } else if(element.length == 2 && element > 0 && element < 13){
        month = element;
        }     
      });
     console.log(year +"-"+month+"-"+day);
    }else{
    // if it is normal format do anything with it.
    console.log(date);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多