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

使用today.getDay()的代码仅周日显示Undefined的原因咨询

问题分析:代码在周日显示Undefined的原因

正常运行的代码示例(指定周六日期)

weeks=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var today = new Date("September 24, 2022 01:15:00"); 
document.getElementById("current-day").innerHTML=weeks[today.getDay()-1];
<h1 id="current-day"></h1>

这段代码在周六(2022年9月24日)及除周日外的其他日期都能正常显示对应星期,但到周日就会输出Undefined,下面是周日的测试代码:

周日测试代码

weeks=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var today = new Date("September 25, 2022 01:15:00");
document.getElementById("current-day").innerHTML=weeks[today.getDay()-1];
<h1 id="current-day"></h1>

问题根源

问题出在JavaScript的getDay()方法上:

  • getDay()返回0到6的数字,0对应周日,1对应周一,以此类推,6对应周六
  • 你的weeks数组是从Monday(周一)开始的,索引0是周一、索引6是周日
  • 当日期是周日时,getDay()返回0,执行0-1=-1,数组取-1索引会返回undefined(JavaScript数组不支持负索引访问有效元素)

修复方案

有几种简单的修复方式:

  1. 调整数组顺序:把周日放在数组第一个位置,让索引和getDay()返回值对应
weeks=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var today = new Date("September 25, 2022 01:15:00");
document.getElementById("current-day").innerHTML=weeks[today.getDay()];
  1. 处理索引计算逻辑:当getDay()返回0时,让它对应数组的最后一个索引(6)
weeks=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var today = new Date("September 25, 2022 01:15:00");
// 用(today.getDay() || 7)把0转换成7,再减1得到6,对应数组里的周日
document.getElementById("current-day").innerHTML=weeks[(today.getDay() || 7) - 1];
  1. 使用模运算:通过模7来处理负数索引的问题
weeks=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var today = new Date("September 25, 2022 01:15:00");
document.getElementById("current-day").innerHTML=weeks[(today.getDay() - 1 + 7) % 7];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:50:44