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

如何为Date.now()与预定义日期设置相等判断条件?

现有逻辑问题说明

你当前的代码存在两个核心问题:

  1. 类型不匹配:new Date(visitationDate)返回的是Date对象,Date.now()返回的是毫秒级时间戳数字,直接用==比较永远不会成立,需要先把Date对象转成时间戳再比较
  2. 触发概率极低:要求两个时间精确到毫秒完全相等,几乎不可能正常触发Condition1

实现方案

你可以根据自己的业务需求选择以下任意一种实现:

方案1:按「当前自然日」规则判断

规则:忽略时分秒,只要visitationDate属于当前自然日且不早于当前时间,就触发Condition1

const visitTs = new Date(visitationDate).getTime();
const nowTs = Date.now();

// 小于当前时间直接走Condition2
if (visitTs < nowTs) {
  // 执行Condition2
} else {
  // 计算当日0点和23:59:59.999的时间戳(默认UTC时区,需要按当地时区可以自行调整逻辑)
  const todayStartTs = new Date(new Date().toISOString().split('T')[0]).getTime();
  const todayEndTs = todayStartTs + 24 * 60 * 60 * 1000 - 1;
  if (visitTs <= todayEndTs) {
    // 执行Condition1
  } else {
    // 执行Condition2
  }
}

方案2:按「24小时滑动窗口」规则判断

规则:只要visitationDate落在当前时间往后24小时的区间内,就触发Condition1

const visitTs = new Date(visitationDate).getTime();
const nowTs = Date.now();
const oneDayLaterTs = nowTs + 24 * 60 * 60 * 1000;

if (visitTs < nowTs || visitTs > oneDayLaterTs) {
  // 执行Condition2
} else {
  // 执行Condition1
}

补充说明

如果业务需要按用户所在时区判断自然日,可以直接取消前端的格式转换操作,后端可以正常解析前端传的原始带时区的日期字符串,不会出现时区偏移问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:02