如何将EU格式dd/mm/yyyy hh:mm:ss转为时间戳?解决getTime()日期颠倒问题
解决EU日期格式转时间戳的问题
JavaScript的Date构造函数解析带横杠的日期字符串时,默认遵循美式MM-dd-yyyy格式,所以你传入的'01-02-2003'会被识别为2003年1月2日,而非你需要的2003年2月1日。要正确处理dd/mm/yyyy hh:mm:ss格式的日期,最稳妥的方式是手动拆分字符串,再构造Date对象:
方法一:手动拆分构造Date对象
这种方法兼容性最好,不受环境解析差异影响:
function convertEuDateToTimestamp(euDateStr) { // 分割日期与时间部分 const [dateSegment, timeSegment] = euDateStr.split(' '); // 拆分日、月、年(注意是dd/mm/yyyy顺序) const [day, month, year] = dateSegment.split('/').map(num => parseInt(num, 10)); // 拆分时、分、秒 const [hours, minutes, seconds] = timeSegment.split(':').map(num => parseInt(num, 10)); // Date的月份是0索引(0=1月,11=12月),所以要减1 const targetDate = new Date(year, month - 1, day, hours, minutes, seconds); return targetDate.getTime(); } // 测试示例 console.log(convertEuDateToTimestamp('01/02/2003 01:02:03')); // 输出对应2003年2月1日01:02:03的时间戳
注意事项
- 不要依赖
Date构造函数直接解析非ISO 8601标准的日期字符串,不同浏览器/Node.js版本的解析行为可能不一致。 - 手动拆分时要确保输入字符串格式严格符合
dd/mm/yyyy hh:mm:ss,如果有格式不统一的情况,需要额外做格式校验。
内容的提问来源于stack exchange,提问作者Vejmal
相关产品推荐
相关产品推荐

