Date.getDate всегда возвращает 1 - PullRequest
1 голос
/ 31 марта 2019

По неизвестной причине 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 каждый метод должен быть более четко назван, чтобы избежать такого рода проблем.

Ответы [ 4 ]

1 голос
/ 31 марта 2019

Когда вы устанавливаете часы, вы передаете 24 вместо 23.

Кроме того, когда вы печатаете дату, вы можете использовать .toLocaleString(), чтобы получить местное время вместо UTC.

1 голос
/ 31 марта 2019

Он делает свою работу, как рекламируется.

lastDay.setDate(0);

установить день до последнего месяца. затем вы добавляете полный день с 24+, так что это первый день следующего месяца.

1 голос
/ 31 марта 2019

Это действительно правильно:

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
0 голосов
/ 31 марта 2019

это происходит, потому что вы также устанавливаете часы, удалите строку кода, в которой вы устанавливаете часы, и вы получите ожидаемый результат: -

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...