首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript getDay返回4月、6月、9月、11月的错误值

Javascript getDay返回4月、6月、9月、11月的错误值
EN

Stack Overflow用户
提问于 2011-06-01 02:41:15
回答 4查看 3.1K关注 0票数 7

我正在使用位于以下位置的脚本:http://www.javascriptkit.com/script/script2/dyndateselector.shtml

如果您尝试它,并转到4月、6月、9月或11月中的任何一个,您会注意到星期几列是错误的。这是一个不正确的数据列表(x从y开始,显示下个月的数据)。

被窃听的月份:4/4月(从周日开始)5月从周日开始

6月6日(从周五开始,而不是周三)7月从周五开始

9/9月(从周六开始,而不是周四)10月从周六开始

11/11(周四开始,而不是周二)12月周四开始

您会注意到,每个错误月份都是从下一个月的某一天开始的,而其他月份似乎都是正确的。

我在这个问题上找不到任何东西。有人能帮上忙吗?实际的Javascript可以在这里找到,getDay()方法出现在125行:http://pastebin.com/0zuBYrzv

我已经在Firefox和Chrome上测试过了。

下面是一些非常简单的代码来演示这个问题:

代码语言:javascript
复制
<script>
var d = new Date();
d.setMonth(5);
d.setFullYear(2011);
d.setDate(1);
alert(d.getDay());
</script>

这将创建一个带有消息"5“的警报,意思是星期五(5+1 = 6,星期五是一周的第六天),而实际上星期三是一周的开始。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-01 03:38:09

这实际上非常有趣,因为我猜明天你的原始代码将再次按你想要的那样工作。

我认为正在发生的事情是你正在创建一个新的Date,它将自动初始化到今天(5月31日)。然后你把月份设置为六月,基本上就是六月三十一号。这个日期不存在,所以javascript会把它变成7月1日。最后,您设置了日期,但是由于您的月份不再是您想要的日期,因此结果将是错误的。

票数 8
EN

Stack Overflow用户

发布于 2011-06-01 02:43:55

看起来0是1月,11是12月。

票数 4
EN

Stack Overflow用户

发布于 2011-06-01 03:04:00

显然,JavaScript不喜欢我设置月份、全年,然后是天。我必须做的是将它们都设置在一个函数中,如下所示:

代码语言:javascript
复制
<script>
var d = new Date();
d.setFullYear(2011, 5, 1);
alert(d.getDay());
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6192012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档