在JavaScript(Node.js)中如何解析'202111031437'类字符串为日期对象
Node.js 解析紧凑数字格式日期时间字符串方案
问题现象
需要将202111031437这类由连续数字组成的YYYYMMDDHHmm格式日期时间字符串解析为Date对象,直接调用Date.parse()解析失败,测试代码如下:
let datetime = '202111031437'; let parse = Date.parse(datetime); console.log(parse);
原因说明
JavaScript 内置的Date.parse()方法与Date构造函数仅支持解析符合 ISO 8601 或 RFC 2822 规范的日期格式,上述紧凑数字串不属于标准可识别格式,因此无法直接解析。
实现方案
通过字符串截取拆分出年、月、日、时、分字段,拼接为标准日期格式后再初始化Date对象即可,实现代码如下:
const dateParser = (dateString) => { const year = dateString.substring(0, 4); const month = dateString.substring(4, 6); const day = dateString.substring(6, 8); const hour = dateString.substring(8, 10); const min = dateString.substring(10, 12); const dateConcat = year + "-" + month + "-" + day + " " + hour + ":" + min; const dateTime = new Date(dateConcat); return dateTime; }
注意事项
- 如果输入的日期字符串包含秒(格式为
YYYYMMDDHHmmss),可新增截取索引12到14位的秒字段,拼接时追加对应内容即可 - 可根据业务场景新增入参长度校验逻辑,避免非法输入导致解析异常
内容的提问来源于stack exchange,提问作者Sahal Nurain
相关产品推荐
相关产品推荐

