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

将日期字符串转换为毫秒时获取到NaN的问题求助

解决JavaScript解析DD.MM.YYYY日期格式返回NaN的问题

这问题我之前踩过同款坑!核心原因是:JavaScript的Date构造函数和Date.parse()默认不支持DD.MM.YYYY这种点分隔的日-月-年格式,解析失败后就返回了NaN。另外你第三种写法里的getMilliseconds()也用错了——它是取日期对象里的「毫秒部分」(0-999),不是整个时间戳,这也是你拿不到正确值的原因之一。

给你几个靠谱的解决方法:

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

最稳妥的方式,自己拆分字符串拿到年、月、日,注意JavaScript的月份是从0开始计数的(0=1月,11=12月),所以要把月份减1:

const dateStr = '28.08.2020';
// 按点分割字符串,得到日、月、年
const [day, month, year] = dateStr.split('.');
// 构造合法的Date对象(月份要减1)
const validDate = new Date(year, month - 1, day);
// 获取时间戳(毫秒)
const milliseconds = validDate.getTime();
console.log(milliseconds); // 输出:1598582400000

方法2:转换为Date支持的标准格式

把DD.MM.YYYY转换成JavaScript能直接识别的格式,比如ISO 8601的YYYY-MM-DD:

const dateStr = '28.08.2020';
// 分割后反转数组,再用连字符拼接
const isoDate = dateStr.split('.').reverse().join('-'); // 得到"2020-08-28"
const milliseconds = new Date(isoDate).getTime();
console.log(milliseconds); // 输出同样的正确时间戳

避坑提醒

  • 不要依赖Date自动解析非标准格式:不同浏览器对非标准日期格式的解析可能不一致,手动处理更可靠。
  • 区分getTime()和getMilliseconds():前者返回从1970年1月1日至今的总毫秒数(时间戳),后者只是当前日期对象里的毫秒部分(0-999),别搞混了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:58:10