首页 > 解决方案 > Date.getDate 总是返回 1

问题描述

由于未知原因,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 应更明确地命名每种方法以避免此类问题。

标签: javascripttypescriptdate

解决方案


其实是对的:

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

推荐阅读