我正在使用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
鉴于分隔符对日期本身的值没有影响,是否有一种方法可以构造一个实际上忽略它的格式字符串?
答案 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));
}