TypeScript实现:将API返回对象数组的日期字符串转为mm/dd/yyyy格式
解决异构数组日期字符串转mm/dd/yyyy格式的问题
没问题,我来帮你搞定这个日期格式转换的需求!针对你这种从API拿到的异构对象数组,我们可以通过工具函数+数组遍历的方式轻松转换日期字段,还能兼顾通用性和容错性。
步骤1:写一个通用的日期转换工具函数
首先我们需要一个能把ISO日期字符串转成mm/dd/yyyy格式的函数,还得处理无效日期的情况,避免报错:
function formatDateString(dateStr) { const date = new Date(dateStr); // 检查日期是否有效,无效的话返回原字符串(也可以改成返回空或自定义提示) if (isNaN(date.getTime())) { return dateStr; } // 月份从0开始,所以要+1,用padStart补前导零保证两位格式 const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const year = date.getFullYear(); return `${month}/${day}/${year}`; }
步骤2:遍历数组转换指定日期字段
如果你的数组里每个对象的日期字段固定是createdOn和submittedDate,直接用map遍历转换就行:
const data = [ { id: 1, fruit: "apple", createdOn: "2016-09-02T23:00:00.000Z", submittedDate: "2016-09-11T23:00:00.000Z" }, { id: 2, fruit: "banana", createdOn: "2016-09-11T23:00:00.000Z", submittedDate: "2016-09-11T23:00:00.000Z" }, { id: 3, fruit: "cherry", createdOn: "2016-09-13T23:00:00.000Z", submittedDate: "2016-09-11T23:00:00.000Z" }, ]; // 转换后赋值给gridData this.gridData = data.map(item => ({ ...item, // 保留原对象的所有其他字段 createdOn: formatDateString(item.createdOn), submittedDate: formatDateString(item.submittedDate) }));
步骤3:适配异构数组的通用方案
如果你的异构数组里不同对象的日期字段可能不一样(比如有的有updatedAt,有的没有),可以写一个更灵活的转换函数,传入需要处理的字段列表:
function transformDatesInArray(arr, dateFieldNames) { return arr.map(item => { const transformedItem = { ...item }; dateFieldNames.forEach(field => { // 只处理存在的字段,避免不存在字段导致的报错 if (transformedItem[field]) { transformedItem[field] = formatDateString(transformedItem[field]); } }); return transformedItem; }); } // 使用时传入你的数据和需要转换的日期字段数组 this.gridData = transformDatesInArray(data, ['createdOn', 'submittedDate']);
这样处理后,this.gridData里的日期字段就都是mm/dd/yyyy格式啦,比如createdOn会从"2016-09-02T23:00:00.000Z"变成"09/02/2016"。
内容的提问来源于stack exchange,提问作者CodeMan03
相关产品推荐
相关产品推荐

