JavaScript Date类使用中遇到的"bug"

JavaScript Date类使用中遇到的"bug"

var a1 = +new Date("2018,1,3");
var a11 = +new Date(2018, 0, 3);
console.log(a1 === a11)//true
 
var a = +new Date(2018, 1, 31);
var a2 = +new Date(2018, 2, 3); 
console.log(a === a2)//true 

在实例化时使用了两种传参方式

  • a1是""字符串(一个参数)
  • a11是 多个number类型数据(多参数)

可以看出当a11这种情况由于月份是由0-11表示的所以这里的0其实指的是一月

a1由于参数是字符串字符串中的月份是1-12表示所以这里的1就是一月,所以a1===all

那a为啥又能等于a2呢?

  • 2018,1,31因为这里的1其实是2月,实际指的是2018.2.31
  • 由于2018的二月只有28天 所以多出的3天其实是下个月的,也就是三月三日
  • 所以 +new Date(2018, 1, 31)===+new Date(2018, 2, 3)

总结:string传参与number传参处理方式有很大的区别

  • 前者是指实际日期,new Date("2018,18,3")会报 Invalid Date
  • 后者会进行合计,new Date(2018,18,3)返回Wed Jul 03 2019 00:00:00 GMT+0800 (中国标准时间)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值