如何根据当前日期显示下一个会话日期?

问题描述 投票:0回答:1

在我的 html 网站上,我想根据当前数据显示下一次讲座的日期。

假设存在以下日期:

2024 年日历第 42 周:2024 年 10 月 14 日

2024 年日历第 43 周:2024 年 10 月 21 日

2025 年日历第 3 周:2025 年 1 月 14 日

我将以下代码添加到我的 html 文件中,但这不起作用。 请注意,我对此完全陌生。

 <p id="demo"></p>
    <script>
      function getDateWeek(date) {
        const currentDate = 
            (typeof date === 'object') ? date : new Date();
        const januaryFirst = 
            new Date(currentDate.getFullYear(), 0, 1);
        const daysToNextMonday = 
            (januaryFirst.getDay() === 1) ? 0 : 
            (7 - januaryFirst.getDay()) % 7;
        const nextMonday = 
            new Date(currentDate.getFullYear(), 0, 
            januaryFirst.getDate() + daysToNextMonday);
     
        return (currentDate < nextMonday) ? 52 : 
        (currentDate > nextMonday ? Math.ceil(
        (currentDate - nextMonday) / (24 * 3600 * 1000) / 7) : 1);
    }
    </script>
    <script>
    const currentDate = new Date();
    const weekNumber = getDateWeek();
    let nextSession;
    switch (weekNumber) {
        case weekNumber <= 42:
          nextSession = "October 14, 2024";
          break;
        case weekNumber > 42 & weekNumber <= 43:
          nextSession = "October 21, 2024";
          break;
        case weekNumber > 43:
        nextSession = "January 14, 2025";
        break;
}
      document.getElementById("demo").innerHTML = "Nächster Termin: " + nextSession;
      </script>
javascript html
1个回答
0
投票

您的方向有点正确,但我注意到的一些关键问题如下所述

问题

  1. 我可以指出的一些关键是你如何使用

    switch
    语句,switch statemnets不适用于你提供的条件,如果/else就足够了,如果你有一个定义的情况,比如切换到情况1,你只需要使用switch或 2 等

  2. 您使用

    bitwise
    运算符 & 而不是逻辑
    &&
    (和):您应该使用
    &&

  3. 您需要能够知道如何计算感兴趣年份的周数。

话虽如此,这里是如何解决这个问题,您可能需要根据您的喜好进行修改,但这无论如何都是正确的。我已经制作了

lectureDates
,以便您可以定义您想要的内容,因为我不知道它们的出现频率。所以我提供了一个列表供您修改。

这里有一个代码片段来指导您,我也稍微修改了您的代码

const lectureDates = [
  { week: 42, date: "October 14, 2024" },
  { week: 43, date: "October 21, 2024" },
  { week: 3, date: "January 14, 2025" },
];

// a func to calculate the current week number of the year...
function getWeekNumber(date) {
  const currentDate = typeof date === "object" ? date : new Date();
  const januaryFirst = new Date(currentDate.getFullYear(), 0, 1);
  const daysToNextMonday =
    januaryFirst.getDay() === 1 ? 0 : (7 - januaryFirst.getDay() + 1) % 7;
  const nextMonday = new Date(
    currentDate.getFullYear(),
    0,
    januaryFirst.getDate() + daysToNextMonday
  );
  const weekNumber =
    Math.ceil((currentDate - nextMonday) / (24 * 3600 * 1000) / 7) + 1;
  return weekNumber;
}

// Get the current week number
const currentDate = new Date();
const currentWeek = getWeekNumber(currentDate);
let nextSession = "No lectures today happy days ahead...";

// Find the next lecture date
for (const lectureDate of lectureDates) {
  if (lectureDate.week >= currentWeek) {
    nextSession = lectureDate.date;
    break;
  }
}

© www.soinside.com 2019 - 2024. All rights reserved.