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

如何用Moment给事件对象添加isToday属性:判断事件是否完全在今日

实现事件全时间段处于今日的判断

要给事件对象添加isToday布尔属性,仅当事件完整时间段都处于今日时设为true,可以通过Moment.js或原生JS Date对象实现,核心逻辑是验证事件起始时间不早于今日0点,且结束时间不晚于今日23:59:59。

方法一:使用Moment.js

// 你的事件对象
const event = {
  author: {id: 14738, first_name: "Test", last_name: "Test"},
  departments_activities: [],
  start_at: "2022-10-11 13:00:00",
  end_at: "2022-10-11 13:18:00",
  id: 715437490,
  title: "test date 2"
};

// 获取今日的起始和结束时间点
const todayStart = moment().startOf('day'); // 今日00:00:00
const todayEnd = moment().endOf('day');     // 今日23:59:59.999

// 添加isToday属性
event.isToday = moment(event.start_at).isSameOrAfter(todayStart) 
                && moment(event.end_at).isSameOrBefore(todayEnd);

逻辑说明:

  • moment().startOf('day')和moment().endOf('day')分别获取今日的起始、结束时间戳
  • isSameOrAfter判断事件开始时间不早于今日起始,isSameOrBefore判断事件结束时间不晚于今日结束
  • 两个条件同时满足时,isToday才为true

方法二:使用原生JS Date对象(无需依赖库)

// 你的事件对象
const event = {
  author: {id: 14738, first_name: "Test", last_name: "Test"},
  departments_activities: [],
  start_at: "2022-10-11 13:00:00",
  end_at: "2022-10-11 13:18:00",
  id: 715437490,
  title: "test date 2"
};

// 构造今日的起始和结束时间
const today = new Date();
const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate());
const todayEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59, 999);

// 转换事件的起止时间为Date对象
const eventStart = new Date(event.start_at);
const eventEnd = new Date(event.end_at);

// 添加isToday属性
event.isToday = eventStart >= todayStart && eventEnd <= todayEnd;

逻辑说明:

  • 通过new Date(year, month, date)构造今日0点时间,new Date(year, month, date, 23,59,59,999)构造今日最后一刻时间
  • 直接通过时间戳大小比较,判断事件起止时间是否完全落在今日区间内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:10:37