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

如何根据当前日期在HTML网站显示下一场讲座的日期?

修复根据日期显示下一场讲座的代码问题

原代码的核心问题

  1. switch语句用法错误:switch的case需要匹配具体数值,不能写条件表达式(比如case weekNumber <=42),这种写法会把条件结果(true/false)和weekNumber(数字)对比,永远无法匹配正确分支。
  2. 逻辑运算符错误:判断逻辑与应该用&&,原代码里的&是按位与运算符,逻辑完全不对。
  3. 周数计算逻辑不可靠:原getDateWeek函数的周数规则和实际需求不匹配,跨年场景下容易出错,导致后续判断失效。

更可靠的解决方案:直接对比日期

跳过周数计算,直接用讲座的具体日期和当前日期对比,逻辑更直观,新手也容易理解,还能避免周数定义差异带来的问题:

<p id="demo"></p>
<script>
// 按时间顺序定义所有讲座日期(注意:月份是0开始,10月对应9,1月对应0)
const lectureDates = [
  { date: new Date(2024, 9, 14), displayText: "2024年10月14日" },
  { date: new Date(2024, 9, 21), displayText: "2024年10月21日" },
  { date: new Date(2025, 0, 14), displayText: "2025年1月14日" }
];

const currentDate = new Date();
let nextSession = "暂无后续讲座";

// 遍历找到第一个未到来的讲座
for (let lecture of lectureDates) {
  if (lecture.date > currentDate) {
    nextSession = lecture.displayText;
    break;
  }
}

// 处理所有讲座已结束的情况
if (nextSession === "暂无后续讲座" && lectureDates.length > 0) {
  nextSession = `${lectureDates[lectureDates.length - 1].displayText}(已结束)`;
}

document.getElementById("demo").innerHTML = "下一场讲座:" + nextSession;
</script>

方案优势

  • 无需复杂的周数计算,逻辑清晰易懂
  • 后续添加新讲座只需在lectureDates数组里追加即可
  • 自动处理所有讲座已结束的边界情况

若坚持用周数方案(仅作参考)

如果一定要基于周数判断,需先修正周数计算和分支判断:

<p id="demo"></p>
<script>
// 修正为ISO标准周数计算(周一为一周开始,第1周包含1月4日)
function getDateWeek(date = new Date()) {
  const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
  const dayNum = d.getUTCDay() || 7; // 周日转为7
  d.setUTCDate(d.getUTCDate() + 4 - dayNum);
  const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
  return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
}

const currentDate = new Date();
const weekNumber = getDateWeek(currentDate);
let nextSession;

// 用if-else替代错误的switch写法
if (weekNumber <= 42) {
  nextSession = "2024年10月14日";
} else if (weekNumber > 42 && weekNumber <= 43) {
  nextSession = "2024年10月21日";
} else {
  nextSession = "2025年1月14日";
}

document.getElementById("demo").innerHTML = "下一场讲座:" + nextSession;
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 15:07:20