奇奇怪怪的 Date

我们知道, Date 实例有一些 set 方法, 如设置月份 setMonth, 设置日期 setDate, 设置时分秒 setHours, 他们都可以接收零或者负数。

我们知道, setMonth(0) 表示将 Date 实例的月份设置为第 0 个月, 即 "1月"

const d = new Date('2023-06-06 06:06:06')
d.setMonth(0)
// 2023/1/6 06:06:06
console.log(d.toLocaleString())

我们也知道, setHours(0) 表示将 Date 实例的 hour 设置为第 0 小时, 即 "0点钟"

const d = new Date('2023-06-06 06:06:06')
d.setHours(0)
// 2023/6/6 00:06:06
console.log(d.toLocaleString())

但, setDate(0) 并不会将日期设置为本月第 0 天(1 号), 而是上月的最后一天...

const d = new Date('2023-06-06 06:06:06')
d.setDate(0)
// 2023/5/31 06:06:06
console.log(d.toLocaleString())

或许是因为 getDate() 返回值是 1-31?

同理, 参数为 -1 就显然了

如非特别声明,本站作品均为原创,遵循【自由转载-保持署名-非商用-非衍生 创意共享 3.0 许可证】。

对于转载作品,如需二次转载,请遵循原作许可。