奇奇怪怪的 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 就显然了