doubleyong
管理员
管理员
  • 最后登录2024-03-15
  • 发帖数1164
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:3836回复:2

JS中 new Date 你不知识的知识点

楼主#
更多 发布于:2021-03-04 21:16
来看一道考题:



var day=new Date(2017,5,31);console.log(day.getMonth());

结果为()


A.  2017
B.  31
C.  6
D.  5



结果:选择C


为什么?
为什么?
为什么?




解析:


new Date()语法:
new Date(year, monthIndex [, day [, hours  [, minutes [, seconds [, milliseconds]]]]]);


getMonth()方法:
返回一个0 到 11的整数值:0 代表一月份,1 代表二月份, 2 代表三月份,依次类推。


根据上面的知识,我们知识了new Date() 第二个参数monthIndex,指的就是月份对应的索引, 一般比正常的月份值少1.
而getMonth()方法,刚好也是获取对应的索引值,那结果为什么为返回6呢?




为什么呢?我们来做下测试,把day对应的值改一下,


改个3看看,输出结果为5;
改成36,输出为6;
改成66,输出结果为7



总结:

原来,当day值,超过了当前月的最大值,最后进行天数相加,而不是直接赋值;


题中,monthIndex为5,实际为6月,月份只有30天,而当day为31时,多的一天,就会加一天,即变成了7月。getMonth()输出即为6


哈哈,懂了嘛,又了解了一个小知识。欢迎关注,右下角公众号
知识需要管理,知识需要分享
doubleyong
管理员
管理员
  • 最后登录2024-03-15
  • 发帖数1164
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2021-03-17 16:26
当给定的天数超过当前月份的最大天数值时,会将超过的天数,进行日期相加。所以月份就可能会和指定的月份不一样
知识需要管理,知识需要分享
lililala6868
禁止发言
禁止发言
  • 最后登录2021-03-17
  • 发帖数3
板凳#
发布于:2021-03-17 16:24
用户被禁言,该主题自动屏蔽!
游客


返回顶部

公众号

公众号