You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带斜杠的日期时间字符串转换为有效的JavaScript DateTime?

解决JavaScript中"DD/MM/YYYY HH:mm"格式日期转有效Date对象的问题

你遇到的问题是:将"31/07/2022 16:00"替换为"31-07-2022 16:00"后仍无法生成有效日期,这是因为JavaScript的Date构造函数对横杠分隔的日期解析存在歧义——部分运行环境会默认将其识别为MM-DD-YYYY格式,而31不是有效的月份,因此返回无效日期。

以下是两种可靠的解决方案:

方法1:手动拆分日期组件构造Date对象

这种方式完全避免解析歧义,是最稳妥的做法:

const dateStr = '31/07/2022 16:00';
// 拆分日期与时间部分
const [datePart, timePart] = dateStr.split(' ');
// 拆分日、月、年
const [day, month, year] = datePart.split('/');
// 注意:JavaScript的月份从0开始计数,需将月份值减1
const validDate = new Date(year, month - 1, day, ...timePart.split(':'));

// 验证结果
console.log(validDate); // 输出正确的Date实例
console.log(validDate.getTime()); // 获取时间戳,可用于编程比较

方法2:转换为ISO 8601格式再解析

ISO格式(YYYY-MM-DDTHH:mm:ss)是Date构造函数能可靠解析的标准格式:

const dateStr = '31/07/2022 16:00';
const [datePart, timePart] = dateStr.split(' ');
const [day, month, year] = datePart.split('/');
// 拼接为ISO格式字符串
const isoDateStr = `${year}-${month}-${day}T${timePart}:00`;
const validDate = new Date(isoDateStr);

console.log(validDate);

得到有效Date对象后,你可以直接使用比较运算符(如>、<、===)比较日期先后,或用getTime()获取时间戳进行数值比较。

内容的提问来源于stack exchange,提问作者Hafiz Hanif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:27:21