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

如何实现通知从旧到新排序及New/This Week/Oldest分类的算法

通知分类与从旧到新排序实现方案

一、先完成从旧到新排序

先把所有通知按接收时间从早到晚排好序,核心是用可比较的时间格式做判断:

  • 确保每条通知的receiveTime字段是标准格式(比如ISO字符串"2024-05-20T14:30:00"或毫秒时间戳)
  • 用数组排序方法,把时间更早的通知排在前面:
// 示例:notifications是原始通知数组,每个元素含receiveTime字段
notifications.sort((a, b) => {
  const timeA = new Date(a.receiveTime).getTime();
  const timeB = new Date(b.receiveTime).getTime();
  // 升序排序,实现旧→新的顺序
  return timeA - timeB;
});

二、按规则划分三类

排序完成后,基于当前时间确定分类的时间范围,把通知分别归类:

  1. 先计算关键时间节点:
const now = Date.now();
// 当日0点0分0秒的时间戳
const todayStart = new Date(new Date().setHours(0, 0, 0, 0)).getTime();
// 7天前的时间戳(当前时间减去7天的毫秒数)
const sevenDaysAgo = now - 7 * 24 * 60 * 60 * 1000;
  1. 遍历排序后的通知,分配到对应分类:
const categorized = {
  New: [],
  ThisWeek: [],
  Oldest: []
};

notifications.forEach(notice => {
  const noticeTime = new Date(notice.receiveTime).getTime();
  if (noticeTime >= todayStart) {
    categorized.New.push(notice);
  } else if (noticeTime >= sevenDaysAgo) {
    categorized.ThisWeek.push(notice);
  } else {
    categorized.Oldest.push(notice);
  }
});

注意事项

  • 时区差异可能导致分类偏差,建议统一用UTC时间存储和计算接收时间
  • 如果在后端处理,逻辑完全一致,只需把语法换成对应后端语言(比如Python、Java),核心还是时间戳的比较与范围判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:13:29