如何将数据库返回的JavaScript日期字符串转换为Date对象并转可读格式?
解决JavaScript解析"/Date(时间戳)/"格式日期的问题
你遇到的问题根源很简单:你传给new Date()的是字符串类型的时间戳,而它需要的是数字类型的毫秒级时间戳,这才导致了"Invalid Date"错误。
直接给你两种靠谱的解决方法:
方法1:正则提取时间戳并转数字
用正则匹配出字符串里的数字部分,再转成数值类型传入new Date():
// 数据库返回的日期字符串 const dbDate = "/Date(1657756800000)/"; // 提取数字并转成整数 const timestamp = parseInt(dbDate.match(/\d+/)[0], 10); // 生成合法的Date对象 const date = new Date(timestamp); // 转成可读格式,比如YYYY-MM-DD HH:mm:ss console.log(date.toLocaleString()); // 根据本地环境输出可读日期,或用toISOString()自定义格式
方法2:字符串截取转数字
如果确定格式固定是/Date(xxx)/,也可以直接截取字符串中间的时间戳部分,再转成数字:
const dbDate = "/Date(1657756800000)/"; // 从第6位开始截取,到倒数第2位结束(跳过"/Date("和")/") const timestamp = Number(dbDate.slice(6, -2)); const date = new Date(timestamp); // 示例:输出YYYY-MM-DD格式 console.log(date.toISOString().split('T')[0]); // 2022-07-14
补充个小技巧:可以用+运算符快速把字符串转成数字,写法更简洁:
const date = new Date(+dbDate.match(/\d+/)[0]);
内容的提问来源于stack exchange,提问作者pass341
相关产品推荐
相关产品推荐

