【问题标题】:Validate date in momemnt js with specified format使用特定格式验证时刻 js 中的日期
【发布时间】:2021-07-18 02:03:37
【问题描述】:

我正在尝试使用moment js进行验证,如下图,它返回true,这是正确的。

moment("10/22/2021","MM/DD/YYYY", true).isValid()

但在某些情况下,我将日期或月份部分作为一位数字,在这些情况下,它将返回 false。有人可以帮助我如何处理这种情况。

moment("4/22/2021","MM/DD/YYYY", true).isValid() -- 想要返回 true

需要考虑的要点:我不想删除设置为 true 以进行严格检查的最后一个参数。日期参数可以随任何 serprator 一起提供。 (意味着它可以像'3-22-2021'、'2.12.2020'、'2_12_2020')。因此,基于 serprator 拆分日期并在日期或月份前添加 0 的建议将不起作用。 或者如果你能建议如何找到合适的 serprator 也会有所帮助

【问题讨论】:

    标签: jquery date validation momentjs


    【解决方案1】:

    您可以使用toLocaleDateString方法获取“MM/DD/YYYY”格式的标准日期,但它不适用于“_”,您必须replace,以下示例供参考。

    let d = new Date("2-3-2011");
    
    console.log(d.toLocaleDateString());
    
    d = new Date("2.3.2011");
    
    console.log(d.toLocaleDateString());
    
    d = new Date("2/3/2011");
    
    console.log(d.toLocaleDateString());
    
    d = new Date(("2_3_2011").replace(/_/g,"-"));
    
    console.log(d.toLocaleDateString());

    【讨论】:

      【解决方案2】:

      考虑到12/02/21XX12/2/21XX 都可以通过M/D/YYYY 进行验证。因此,您可以使用它并评估传入日期的格式并将其传递给执行其余操作的那一刻。

      import moment from "moment";
              const date = "10/22/2021";
              let dateFormat;
              if(date.includes("/")){
              dateFormat = 'M/D/YYYY';
              }else if(date.includes(".")){
              dateFormat = 'M.D.YYYY';
              }else if(date.includes("-")){
              dateFormat = 'M-D-YYYY';
              }else if(date.includes("_")){
              dateFormat = 'M_D_YYYY';
              }
              const date_item = moment(date, dateFormat, true).isValid();
              console.log(date_item)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-26
        • 1970-01-01
        • 2021-09-25
        • 2021-09-15
        相关资源
        最近更新 更多