更改月份时日期不正确

Incorrect Date when changing month

我已将 ngx-bootstrap 中的 BsDatepickerModule 集成到我的应用程序模块中,让用户可以按日期过滤列表。问题是当我更改月份时(例如从一月移动到二月,我得到的日期不正确(天 - 1)。

这是应用程序模块:

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

组件如下:

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

当我更改月份然后 select 例如 2019/01/07 输出打印 2019/01/06

怎么了?

请注意,我正在转换日期以获取格式 YYYY-mm-dd

在 MDN 文档中写到,monthIndex 是基于 0 的。

因此,要将月份从 Date 构造函数转换为人类可读的月份,请将值加 1。

新日期().getMonth() + 1

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

编辑:

好的,我已经创建了一个 stackblitz 演示。检查并查看您是否希望您的应用程序像这样。

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

编辑 2:

我已经更新了演示。 您不应该将日期转换为 toISOString(),因为默认情况下它是 (我认为)。 如果您想要与本地日期相同,请使用 toLocalDateString()。

学分:

我的一位前辈在工作。

@Eliseo (在评论区)