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

如何忽略秒数对比当前日期与数据列表日期并更新字段

匹配日期并更新对应字段(忽略秒数)

需求明确:对比当前日期与数据列表中的日期(忽略秒及毫秒部分),若匹配则将对应数据项的isCurrentDate字段设为true。

先看你提供的示例数据:

const currentdate = new Date();

const works: any[] = [
  {
    id: 1,
    dateWork:'2022-10-08T10:30:04.000Z',
    isCurrentDate: false,
  },
  {
    id: 2, // 示例中id重复,建议修正为唯一值
    dateWork:'2022-10-07T11:30:04.000Z',
    isCurrentDate: false,
  },
  {
    id: 3,
    dateWork:'2022-10-06T13:30:04.000Z',
    isCurrentDate: false,
  }
];

解决方案

核心思路是把当前日期和列表中的日期都截断到分钟级别(去掉秒、毫秒),再进行匹配。由于你的dateWork是UTC时间(带Z后缀),处理时要统一用UTC时间组件,避免本地时区干扰匹配结果。

代码实现如下:

// 处理当前UTC日期,仅保留年、月、日、时、分
const currentUTC = new Date(Date.UTC(
  currentdate.getUTCFullYear(),
  currentdate.getUTCMonth(),
  currentdate.getUTCDate(),
  currentdate.getUTCHours(),
  currentdate.getUTCMinutes(),
  0, // 秒设为0
  0  // 毫秒设为0
));

// 遍历数组,更新匹配项的isCurrentDate字段
const updatedWorks = works.map(item => {
  const workDate = new Date(item.dateWork);
  // 处理列表中的UTC日期,同样截断到分钟
  const workUTC = new Date(Date.UTC(
    workDate.getUTCFullYear(),
    workDate.getUTCMonth(),
    workDate.getUTCDate(),
    workDate.getUTCHours(),
    workDate.getUTCMinutes(),
    0,
    0
  ));
  
  return {
    ...item,
    isCurrentDate: workUTC.getTime() === currentUTC.getTime()
  };
});

说明

  • Date.UTC()生成UTC时间戳,避免本地时区转换带来的误差
  • 用getTime()获取时间戳比较,是最可靠的日期匹配方式
  • 采用map()返回新数组,不修改原数据,符合函数式编程最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:40:38