如何将多维数组中的Unix时间戳转换为指定日期格式并保留原响应结构
解决方案
实现思路
- 首先编写时间戳格式化工具,将13位毫秒级Unix时间戳转换为
DD/MM/YYYY格式 - 完全保留所有层级的字段结构,仅替换目标位置的时间戳值
- 对原对象做深拷贝后再执行替换操作,避免污染原始接口返回数据
代码实现
// 时间戳转DD/MM/YYYY格式工具函数 const formatUnixToDate = (timestampStr) => { const timestamp = Number(timestampStr) const date = new Date(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}` } // 响应数据转换函数 const transformResponse = (originalResponse) => { // 深拷贝原对象,普通数据结构下该方法完全够用,特殊结构可替换为其他深拷贝方案 const copied = JSON.parse(JSON.stringify(originalResponse)) // 定位到数据集位置遍历转换 const dataArr = copied.fus_config.dataSource.dataset.data copied.fus_config.dataSource.dataset.data = dataArr.map(item => { // 仅替换第一个元素的时间戳,其余值完全保留 return [formatUnixToDate(item[0]), ...item.slice(1)] }) return copied } // 调用示例 const transformedResponse = transformResponse(mockResponse)
注意说明
你示例中给出的转换后日期12/13/1995仅为演示值,实际转换后会显示时间戳对应的真实日期,比如你提供的1631212200000转换后结果为10/09/2021。如果后续时间戳的存储位置有变动,可将逻辑调整为递归遍历所有字段,判断值是否为符合规则的13位数字字符串,符合则执行转换即可适配更多场景。
内容的提问来源于stack exchange,提问作者Gaurav
相关产品推荐
相关产品推荐

