更改月份时日期不正确

时间:2019-01-07 11:42:50

标签: angular ngx-bootstrap

我已将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 :(得分:1)

在MDN文档中,monthIndex基于0。

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

new Date()。getMonth()+ 1

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

编辑:

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

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

编辑2:

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

积分:

我的一个上班族。

@Eliseo (在评论部分)