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

JavaScript如何计算特定日期满一年前10天并展示相关记录?

看起来你已经搞定了数据获取和数组处理,就差日期逻辑这一步了,我来帮你捋清楚怎么实现「在last edited日期满一年的前10天展示记录」的需求:

核心逻辑拆解

我们需要先算出「last edited日期满一年」的日期,再往前推10天得到一个起始点,最后判断当前日期是否落在「起始点到满一年当天」的区间里,满足条件就展示记录。

完整前端代码实现

// 假设 fetchedDate 是从数据库拿到的 'last edited' 日期(字符串/时间戳都可以)
const lastEditedDate = new Date(fetchedDate);

// 计算「满一年」的日期:年份+1,JS会自动处理闰年、月份天数差异
const oneYearLater = new Date(lastEditedDate);
oneYearLater.setFullYear(lastEditedDate.getFullYear() + 1);

// 计算「满一年前10天」的日期:从满一年的日期减去10天
const tenDaysBeforeExpiry = new Date(oneYearLater);
tenDaysBeforeExpiry.setDate(oneYearLater.getDate() - 10);

// 处理当前日期:清零时分秒,避免时间部分干扰日期比较
const today = new Date();
today.setHours(0, 0, 0, 0);
// 同步清零另外两个日期的时分秒,保证比较的是纯日期维度
oneYearLater.setHours(0, 0, 0, 0);
tenDaysBeforeExpiry.setHours(0, 0, 0, 0);

// 判断当前日期是否在目标区间内
const shouldShow = today >= tenDaysBeforeExpiry && today <= oneYearLater;

// 满足条件就展示记录
if (shouldShow) {
  // 这里写你的展示逻辑
  console.log("展示这条记录");
}

关键细节提醒

  • 自动处理特殊日期:不用担心闰年(比如2020-02-29加一年会自动变成2021-02-28)或者大月小月的问题,JS的Date对象会帮你自动调整。
  • 时分秒清零很重要:如果只需要判断日期是否符合,一定要把所有参与比较的日期的时分秒设为0,不然可能会出现「今天是5月20日上午,但目标日期是5月20日下午」导致判断不成立的情况。
  • 日期比较简化:JS里Date对象可以直接用>=/<=比较,本质是比较它们对应的毫秒时间戳,非常方便。

额外优化思路

如果你的数据库支持日期计算,其实可以在查询阶段就筛选出符合条件的记录,减少前端的处理压力。比如用MySQL的SQL语句:

SELECT * 
FROM your_table 
WHERE DATE_ADD(last_edited, INTERVAL 1 YEAR) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 10 DAY);

这条SQL会直接返回「last edited满一年的日期在今天到未来10天内」的记录,和前端逻辑完全等价。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:06:47