如何在JavaScript中将/Date(1231110000000)/格式时间戳转为DD/MM/YYYY?
解决JavaScript中/Date(xxx)/格式转DD/MM/YYYY的问题
嘿,这个需求我之前做项目的时候刚好碰到过,其实拆解成几步就很简单了,我给你一步步讲清楚:
步骤1:提取时间戳数字
这种/Date(1231110000000)/格式本质是包裹了毫秒级时间戳的字符串,我们得先把里面的纯数字提取出来。这里有两种好用的方法:
- 正则匹配:用
\d+直接匹配字符串里的所有数字,一步拿到时间戳字符串 - 字符串分割:通过
split('(')[1].split(')')[0]拆分括号前后内容,取出中间的数字
步骤2:转换为Date对象
把提取到的时间戳字符串转成数字,再传入Date构造函数,就能得到对应的日期对象了。
步骤3:格式化为DD/MM/YYYY
这里要注意两个容易踩坑的点:
- JavaScript的
getMonth()返回值是0-11(0对应1月),所以必须加1才是实际月份 - 日和月如果是个位数,要补前导零,比如1月要变成
01,5日变成05
完整实现代码
我封装了一个直接能用的函数,你可以拿去测试:
function convertDate(dateString) { // 提取时间戳数字 const timestampMatch = dateString.match(/\d+/); if (!timestampMatch) return '无效的日期格式'; const timestamp = timestampMatch[0]; // 创建Date对象 const date = new Date(Number(timestamp)); // 补零处理日、月 const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); const year = date.getFullYear(); // 拼接成目标格式 return `${day}/${month}/${year}`; } // 测试示例 console.log(convertDate('/Date(1231110000000)/')); // 输出:05/01/2009
兼容老浏览器的小技巧
如果需要兼容不支持padStart的老浏览器,可以自己写个简单的补零函数替换:
function padZero(num) { return num < 10 ? `0${num}` : num; }
然后把代码里的padStart换成padZero(day)、padZero(month)就行。
内容的提问来源于stack exchange,提问作者Haytham
相关产品推荐
相关产品推荐

