使用new Date()解析失败,如何将非标准日期字符串转为datetime对象?正则方案咨询
提取非标准日期字符串中的有效时间并转换为Date对象
可以通过正则表达式提取字符串里的核心日期时间片段,再拼接成JavaScript的Date对象可解析的标准格式,具体实现如下:
正则匹配与转换代码
const rawDateTimeStr = "Today, Fri May 12 2023 at 07:00:00, we go swimming"; // 匹配核心日期时间部分的正则 const dateTimeRegex = /(\w{3} \w{3} \d{1,2} \d{4}) at (\d{2}:\d{2}:\d{2})/; const matchResult = rawDateTimeStr.match(dateTimeRegex); if (matchResult) { // 拼接成标准的可解析格式 const validStr = `${matchResult[1]} ${matchResult[2]}`; const dateObj = new Date(validStr); console.log(dateObj); // 输出:Fri May 12 2023 07:00:00 GMT+xxx (对应时区) } else { console.log("未找到有效日期时间内容"); }
正则说明
(\w{3} \w{3} \d{1,2} \d{4}):捕获星期缩写+月份缩写+日期+年份的片段,比如示例中的Fri May 12 2023at:匹配字符串中连接日期和时间的固定标识(\d{2}:\d{2}:\d{2}):捕获时分秒格式的时间片段,比如示例中的07:00:00
扩展适配
如果你的日期字符串格式有变动,可调整正则规则:
- 月份支持全称:把
\w{3}改为\w{3,9} - 兼容12小时制(带AM/PM):将时间匹配部分修改为
(\d{1,2}:\d{2}:\d{2} [AP]M)
内容的提问来源于stack exchange,提问作者Kim Mỹ
相关产品推荐
相关产品推荐

