1

我正在使用date-fns 2 (alpha)将日期字符串解析为 JavaScript 日期。这个版本的库对格式/解析字符串使用unicode 标记

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

例如说我想解析以下日期:“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

鉴于分隔符对日期本身的值没有影响,有没有办法构造一个基本上忽略它的格式字符串?

4

1 回答 1

0

如果您尝试将dd mm yyyy具有各种分隔符格式的日期字符串转换为 js 日期对象(以 UTC 为单位),则可以使用正则表达式解析字符串,然后new Date(Date.UTC(...)). 例如:

const convertDate = (dstring) => {
  const [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 (const dstring of dstrings) {
  const date = convertDate(dstring);
  console.log(JSON.stringify(date));
}

于 2018-11-09T14:41:40.523 回答