代码之家  ›  专栏  ›  技术社区  ›  harryg

使用带通配符分隔符的unicode标记格式字符串分析日期

  •  1
  • harryg  · 技术社区  · 6 年前

    date-fns 2 (alpha) 将日期字符串解析为JavaScript日期。此版本的库使用 unicode tokens

    dd/MM/yyyy . 效果很好:

    > dateFns.parse('18/11/2018', 'dd/MM/yyyy', new Date());
    2018-11-18T00:00:00.000Z
    

    但假设我要解析格式为“18 11 2018”的日期,原始格式字符串将失败:

    > dateFns.parse('18 11 2018', 'dd/MM/yyyy', new Date());
    Invalid Date
    

    既然分隔符字符对日期本身的值没有影响,有没有一种方法可以构造一个基本上忽略它的格式字符串?

    1 回复  |  直到 6 年前
        1
  •  0
  •   benvc    6 年前

    dd mm yyyy 用各种分隔符格式化js date对象(UTC格式),可以使用regex解析字符串,然后 new Date(Date.UTC(...)) . 例如:

    const convertDate = (dstring) => {
      let [d, m, y] = dstring.match(/\d+/g);
      return new Date(Date.UTC(y, m - 1, d));
    }
    
    // the below demonstrates output for a variety of date string separators
    
    const dstrings = ['18/11/2018', '18 11 2018', '18-11-2018', '18.11.2018'];
    
    for (let dstring of dstrings) {
      let date = convertDate(dstring);
      console.log(JSON.stringify(date));
    }