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

如何用JavaScript判断当前日期是否晚于本周周二18点?

解决着陆页内容权限控制:仅本周周二18点后开放

核心实现思路

直接计算本周周二18:00:00的时间戳,将当前时间与该时间戳对比:如果当前时间更大,就开放内容权限。这种方式天然解决跨月问题,同时精确到时分秒。

完整代码示例

// 获取当前时间(测试时可替换为指定时间,比如new Date("2022-11-03 16:20:04"))
const currentTime = new Date();

// 计算本周周二的日期
const dayOfWeek = currentTime.getDay(); // 0=周日, 1=周一, 2=周二, ..., 6=周六
// 计算调整到本周周二的天数差
const daysAdjustment = dayOfWeek === 0 
  ? 2 // 周日到周二需加2天
  : dayOfWeek <= 2 
    ? (2 - dayOfWeek) // 周一加1天,周二加0天
    : -(dayOfWeek - 2); // 周三到周六,减去已过天数回到本周周二

// 创建本周周二的日期对象
const tuesdayThisWeek = new Date(currentTime);
tuesdayThisWeek.setDate(currentTime.getDate() + daysAdjustment);
// 固定时间为18:00:00
tuesdayThisWeek.setHours(18, 0, 0, 0);

// 判断是否满足开放条件
const canShowRestrictedContent = currentTime > tuesdayThisWeek;

// 测试输出
console.log("本周周二18点时间:", tuesdayThisWeek);
console.log("是否可展示内容:", canShowRestrictedContent);

代码说明

  1. 跨月自动处理:setDate()方法会自动适配月份变化(比如10月31日加1天会自动转为11月1日),无需手动计算月份边界。
  2. 精确时间校验:通过setHours(18, 0, 0, 0)将周二的时间固定到下午6点,确保只有18点之后才开放内容。
  3. 全场景覆盖:
    • 周日/周一:自动计算到本周周二的日期
    • 周二:直接校验是否过了18点
    • 周三到周六:回到本周周二的日期,此时当前时间必然晚于周二18点,返回true

原代码的问题分析

  1. 原日期对象被篡改:today.setDate(first + 1)会直接修改today本身,后续创建wednesday等对象时,都是基于修改后的today,导致日期计算混乱。
  2. 缺失时间维度校验:只对比日期,没有设置具体时间点,会导致周二18点前就错误开放内容。
  3. 天数差计算冗余:无需计算天数差,直接对比时间戳是更准确、高效的判断方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:10:57