由于未知原因,getDate
总是返回1
而不是28
。我正在使用NodeJS 10.6.0和Typescript 3.2.2。
const lastDay = new Date();
lastDay.setDate(0);
lastDay.setHours(24, 59, 59, 999);
console.log(lastDay, "|", lastDay.getDate()); // 2019-02-28T23:59:59.999Z | 1
编辑:我正在尝试在最后一个毫秒获取上个月的最后一天。那么setDate(0)
是正确的。我不明白的是,为什么我打印时间时得到28T23:59:59.999Z
而getDate()
返回第二天。
Edit2 :有效使用getUTCDate
可以解决我的问题,但由于它的实现方式很奇怪,它对我仍然很奇怪。 IMO的每种方法都应该更明确地命名以避免这种问题。
答案 0 :(得分:1)
这是正确的:
Date.prototype.getDate()
根据当地时间返回指定日期的月份(1-31)。
您可以对其进行测试:
const lastDay: Date = new Date();
lastDay.setDate(3);
lastDay.setHours(24, 59, 59, 999);
console.log(lastDay, "|", lastDay.getDate()); // 2019-03-03T23:59:59.999Z | 4
答案 1 :(得分:1)
设置小时数时,您传递的是24而不是23。
另外,在打印日期时,您可能希望使用.toLocaleString()
,以便获取本地时间而不是UTC。
答案 2 :(得分:1)
它正在做广告中的工作。
lastDay.setDate(0);
将日期设置为相对月份的最后一天。然后您将整天加24天以上,因此是下个月的第一天。
答案 3 :(得分:0)
之所以会这样,是因为您还同时设置了小时数,因此删除了设置小时数的代码行,您将获得预期的结果:-
const lastDay = new Date();
lastDay.setDate(0);
//lastDay.setHours(24, 59, 59, 999);
console.log(lastDay, "|", lastDay.getDate()); //Thu Feb 28 2019 19:01:20 GMT+0500 (Pakistan Standard Time) "|" 28