更改月份时日期不正确
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 (在评论区)
我已将 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 (在评论区)