Неверная дата при смене месяца - PullRequest
0 голосов
/ 07 января 2019

Я включил BsDatepickerModule из ngx-bootstrap в свой модуль приложения, чтобы позволить пользователю фильтровать список по дате. Проблема в том, что когда я меняю месяц (например, при переходе с января на февраль, у меня неверная дата (день - 1).

Вот модуль приложения:

@NgModule({
    declarations: [AppComponent],
    imports: [BsDatepickerModule.forRoot() ],
    bootstrap: [AppComponent]
})
export class AppModule { }

Вот компонент:

onValueChange(value: Date): void {
    console.log(value.toISOString().split('T')[0]);
});

Когда я изменяю месяц, а затем выбираю, например, 2019/01/07, вывод печатается 2019/01/06

Что не так?

Обратите внимание, что я конвертирую дату, чтобы получить ее в формате YYYY-mm-dd

1 Ответ

0 голосов
/ 07 января 2019

В документации MDN написано, что monthIndex равен 0.

Чтобы преобразовать месяц из конструктора Date в человекочитаемый месяц, добавьте 1 к значению.

новая дата (). GetMonth () + 1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth

Edit:

Хорошо, я создал демонстрацию stackblitz. Проверьте и убедитесь, что ваше приложение должно быть таким.

https://stackblitz.com/edit/angular-z3vtli

Редактировать 2:

Я обновил демо. Вы не должны конвертировать дату в isOString (), как это по умолчанию (я думаю) . Перейдите к toLocalDateString (), если вы хотите использовать ту же дату, что и местная.

Кредиты:

Один из моих старших на работе.

@ Eliseo (в разделе комментариев)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...