Date.getDate总是返回1

时间:2019-03-31 13:48:49

标签: javascript typescript date

由于未知原因,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.999ZgetDate()返回第二天。

Edit2 :有效使用getUTCDate可以解决我的问题,但由于它的实现方式很奇怪,它对我仍然很奇怪。 IMO的每种方法都应该更明确地命名以避免这种问题。

4 个答案:

答案 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