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

如何移除TypeScript日期对象数组中的UTC时间戳,保留yyyy-mm-dd格式

移除TypeScript数组中日期对象的UTC时间,保留yyyy-mm-dd格式

方案一:用你提到的Luxon库处理

既然已经尝试过DateTime.fromJSDate,直接用map遍历数组(比forEach更方便,能直接返回处理后的新数组)就行,不用手动拼接年月日:

import { DateTime } from 'luxon';

// 假设你的数组元素结构如下,可根据实际情况调整类型
interface DateItem {
  date: Date;
  // 其他属性...
}

const processedDateArray = dateArray.map(item => ({
  ...item,
  // 直接转成yyyy-MM-dd格式的字符串
  date: DateTime.fromJSDate(item.date).toFormat('yyyy-MM-dd')
  // 如果需要返回Date对象而非字符串,改用这行:
  // date: DateTime.fromJSDate(item.date).startOf('day').toJSDate()
}));

startOf('day')会把时间部分重置为00:00:00,转字符串的话用toFormat就能得到标准格式。

方案二:原生TypeScript/JavaScript实现(无需额外库)

如果不想引入第三方依赖,直接用Date原生方法处理就行,注意月份是从0开始的,要加1:

interface DateItem {
  date: Date;
  // 其他属性...
}

const processedDateArray = dateArray.map(item => {
  const date = item.date;
  const year = date.getFullYear();
  // 月份补0,确保是两位数字
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  
  return {
    ...item,
    // 返回yyyy-MM-dd格式的字符串
    date: `${year}-${month}-${day}`
    // 要返回Date对象的话,改用这行:
    // date: new Date(Date.UTC(year, date.getMonth(), date.getDate()))
  };
});

用map遍历原数组返回新对象数组,不会修改原数组,比forEach更简洁符合函数式编程习惯。

注意点

  • 如果你需要保留Date对象类型而非字符串,两种方案都可以调整返回逻辑,按需选择即可。
  • 因为你已经完成排序,处理后的数组顺序不会改变,直接使用即可。

内容的提问来源于stack exchange,提问作者nez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:27