js默认的日期处理方式不合常理及逻辑:
1。星期几的表达
国际规则及中国规定:星期是从星期1开始的,不是星期日。
参见ISO 8601。
js将周日输出为0:(如果第一天是0,周日应当是6)
2023年1月15日是星期几:
console.log(new Date(2023,0,15).getDay());
0
2。month的调用更是不一致
需要得到本月几号星期几应当将本月减1,1月写成0:
需要得到本月一共有多少天,这个本月确不必减1了。
2023年1月15日是星期几:
console.log(new Date(2023,0,15).getDay());
0
2023年1月一共有多少天:
console.log(new Date(2023,1,0).getDate());
31
3。0表示这个月的最后一天
2023年的1月30日,需要这样写
console.log(new Date(2023,0,30));
Mon Jan 30 2023 00:00:00 GMT+0800 (Bei Jin Standard Time)
2023年的1月31日,需要这样写
console.log(new Date(2023,1,0));
Tue Jan 31 2023 00:00:00 GMT+0800 (Bei Jin Standard Time)
javascript的这种设计是反人类的。
有无好的js库或者函数做到:
周日表达成6,第一天是周一(0)
或者周日表达成7,第一天是周一(1);
month不再减1
一个月的最后一天不是0
考虑到功能大而全那么推荐moment,其小而精的完美替代品是只有2kb的dayjs。
希望能帮助到你。