当前位置: 首页 > 科技观察

对比JavaScript日期对象也能踩坑?上升姿势

时间:2023-03-16 23:50:40 科技观察

从直觉上看,两个相同的日期比较应该是相等的,但结果不是这样的:constd1=newDate('2019-06-01');constd2=newDate('2018-06-01');constd3=newDate('2019-06-01');d1===d3;//falsed1==d3;//false可以看到不管用===还是==,结果都是false。想想也不奇怪,毕竟是两个独立的JS对象,不是基本数据类型的变量。那么如何判断日期是否相等呢?可以使用toString()或valueOf()。Date对象的toString()方法将日期转换为ISO日期字符串,valueOf()方法将日期转换为以毫秒为单位的时间戳。constd1=newDate('2019-06-01');constd2=newDate('2018-06-01');constd3=newDate('2019-06-01');//SatJun01201908:00:00GMT+0800(中国标准时间)d1.toString();d1.valueOf();//1559347200000d1.toString()===d2.toString();//falsed1.toString()===d3.toString();//true1.valueOf()===d2.valueOf();//falsed1.valueOf()===d3.valueOf();//true有趣的是,虽然==和===不能用来比较日期对象,<而>可以是:d1b,即a在b后面,负值表示aa-b);//[d1,d2,d3]下次默认对array数组进行排序,出现这样的结果你不会感到意外:consta=[1,4,3,12];a.sort();//[1,12,3,4]所以顺序为了防止错误,您应该传入一个自定义排序函数。