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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:40