首页 > 解决方案 > Javascript Date getDay() 格式问题

问题描述

我遇到的问题是 JS 试图获取特定日期的星期几:

const searchDate = "2021-02-04";
const serchDateDayOfWeek = new Date( searchDate ).getDay();
console.log( serchDateDayOfWeek ) // => 3

我假设结果是 4(星期四),但结果是 3(星期三)。

在不修改 seachDate 格式的情况下获取星期几的正确方法是什么?

提前致谢!

标签: javascriptdate

解决方案


更新:

在 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。

如果你谷歌,你会发现很多人都被困住了。我认为这个答案应该与其他答案一起提交,例如:

所以,我强烈建议不要使用 dateString 来构造 Date。只需使用new Date(2021, 02, 04),您将得到正确答案。


推荐阅读