使用带有通配符分隔符的Unicode令牌格式字符串来解析日期

时间:2018-11-09 11:27:41

标签: javascript date parsing date-fns

我正在使用date-fns 2 (alpha)将日期字符串解析为JavaScript日期。此版本的库使用unicode tokens作为格式/解析字符串。

我希望能够解析日期字符串,而不必特别关心分隔符。

例如说我想解析以下日期:“ 18/11/2018”。我可以使用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 个答案:

答案 0 :(得分:0)

如果您尝试将带有各种分隔符的dd mm yyyy格式的日期字符串转换为js日期对象(采用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));
}