javascript - Javascript Date getDay() 格式问题
问题描述
我遇到的问题是 JS 试图获取特定日期的星期几:
const searchDate = "2021-02-04";
const serchDateDayOfWeek = new Date( searchDate ).getDay();
console.log( serchDateDayOfWeek ) // => 3
我假设结果是 4(星期四),但结果是 3(星期三)。
在不修改 seachDate 格式的情况下获取星期几的正确方法是什么?
提前致谢!
解决方案
更新:
在 MDN 中,日期构造函数语法包括
new Date()
new Date(value)
new Date(dateString)
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]])
"2021-02-04" 是一个被 MDN强烈反对的 dateString (这个引用在 Internet 上广泛分布 ^v^ )
由于浏览器的差异和不一致,强烈建议不要使用 Date 构造函数(和 Date.parse(),其工作方式相同)解析日期字符串。
仅按惯例支持 RFC 2822 格式字符串。支持 ISO 8601 格式的不同之处在于仅日期字符串(例如“1970-01-01”)被视为 UTC,而不是本地。
简而言之,有许多国际标准会在 dateString 模式下产生冲突。不同的浏览器可能使用不同的标准,即“浏览器差异”。所以这就是为什么我在mdn中运行你的代码,输出是 4 这与你的不同。
还有另一个答案与你的情况相同,输出比你的正确结果小 1。
如果你谷歌,你会发现很多人都被困住了。我认为这个答案应该与其他答案一起提交,例如:
- javascript new Date() 构造函数对于相同的不同格式字符串的模棱两可的行为
- 为什么 Date.parse 给出不正确的结果?
- Date.getDay() 返回不同的值
- Javascript,getDay() 返回错误的数字
- 如果日期前导零,getDay() 返回错误的日期
- Date.getDay() 返回错误的星期几
- ...
所以,我强烈建议不要使用 dateString 来构造 Date。只需使用new Date(2021, 02, 04)
,您将得到正确答案。
推荐阅读
- python - 陷入循环 - 线程继续,而循环阻止代码向前移动(Python)
- python - 通过取数据框 pandas 中的第一个值按对象取消分组
- xpath - 刮掉带有href的段落
- android - 安全访问数据库的最常用方法
- javascript - Javascript:getHtmlNavThumbTogglePanel 不是函数
- x86 - WinDbg 是否显示 [MOV r32,r/m32] 的错误操作码?
- jenkins - 我在哪里可以找到文件系统上 jenkins 配置中的“启用代理 → 主访问控制”选项?
- mysql - 如何加快 NOT IN 查询?
- bitbucket - 仅 Haproxy 公共 jenkin webhook
- php - 将一列拆分为三列