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

使用moment.js获取的dayOfWeek判断等于0不生效的原因及修复方法

故障根因

  • 类型不匹配:moment().tz(timezone).format('d')的返回值为字符串类型,周日场景下返回的是'0'而非数字0。严格相等运算符===会同时校验值和数据类型,字符串'0'与数字0类型不一致,因此判断永远返回false。
  • 语法错误:原代码if条件缺失闭合右括号,if ((dayOfWeek === 0 ) || (dayOfWeek == 6)少了一个右括号,运行时会直接抛出语法错误。

修复方案

推荐两种可行修复方式,二选一即可:

  1. 类型转换后使用严格相等判断,同时补全语法括号:
const dayOfWeek = Number(moment().tz(timezone).format('d'));
// 周末检测逻辑
// 0 = 周日,6 = 周六
if (dayOfWeek === 0 || dayOfWeek === 6) {
    response = "closed";
} else {
    response = "open";
}
  1. 直接使用moment原生的数字星期获取方法,无需额外做类型转换,性能和可靠性更高:
// moment().day() 原生返回数字类型的星期值,范围0(周日)~6(周六)
const dayOfWeek = moment().tz(timezone).day();
// 周末检测逻辑
if (dayOfWeek === 0 || dayOfWeek === 6) {
    response = "closed";
} else {
    response = "open";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:57:01