You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

天气应用开发:如何用getDay()获取后天及大后天的星期几?

解决天气应用的未来日期星期计算问题

嗨,我来帮你捋捋这个问题~你的思路方向是对的,用getDay()配合星期数组映射完全可行,但代码里有几个关键小问题导致没拿到预期结果,咱们一步步修正:

先说说你代码里的问题

  1. trueDay未初始化且赋值错误:你直接用trueDay + 1但没给trueDay赋值;而且if里写的trueDay === days[0]是比较运算符,不是赋值(应该用=),其实这个if完全没必要,currentDay本身就是getDay()返回的0-6数值,直接对应数组下标就行。
  2. 未处理下标越界:比如今天是周六(getDay()返回6),加1就变成7了,数组没有下标7的元素,这时候需要用取模%7来实现循环。
  3. 函数没有返回结果:你没把计算好的星期字符串组合成需要的格式返回。

两种可行的实现方案

方案1:通过下标计算(简单高效)

直接基于今天的星期下标,计算后天、大后天的下标,用取模处理边界情况:

function calculateWeatherDays() {
  const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  const today = new Date();
  const currentDay = today.getDay();

  // 计算后天(今天+2天)的星期下标,取模7处理跨周情况
  const dayAfterTomorrowIndex = (currentDay + 2) % 7;
  const dayAfterTomorrow = days[dayAfterTomorrowIndex];

  // 计算大后天(今天+3天)的星期下标
  const dayNextIndex = (currentDay + 3) % 7;
  const dayNext = days[dayNextIndex];

  // 替换成实际接口返回的温度数据即可
  return `tomorrow: 21º/13º, ${dayAfterTomorrow}: .... , ${dayNext} = ....`;
}

// 测试调用
console.log(calculateWeatherDays());

方案2:直接操作日期对象(更严谨,支持跨月)

如果遇到月末跨月的情况(比如今天是31号,加2天到下个月2号),直接修改日期对象会更可靠,Date会自动处理月份变化:

function calculateWeatherDays() {
  const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  const today = new Date();

  // 创建后天的日期实例
  const dayAfterTomorrowDate = new Date(today);
  dayAfterTomorrowDate.setDate(today.getDate() + 2);
  const dayAfterTomorrow = days[dayAfterTomorrowDate.getDay()];

  // 创建大后天的日期实例
  const dayNextDate = new Date(today);
  dayNextDate.setDate(today.getDate() + 3);
  const dayNext = days[dayNextDate.getDay()];

  return `tomorrow: 21º/13º, ${dayAfterTomorrow}: .... , ${dayNext} = ....`;
}

这两种方法都能完美解决你的需求,选哪种看你场景——如果只是简单计算星期,方案1足够;如果需要处理复杂日期场景,方案2更稳妥。

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

火山引擎 最新活动