Angular 更改月份时日期不正确

Angular 更改月份时日期不正确,angular,ngx-bootstrap,Angular,Ngx Bootstrap,我在我的应用程序模块中集成了来自ngx引导的BsDatepickerModule,使用户可以按日期筛选列表。问题是,当我更改月份时(例如,从1月移动到2月,我得到的日期不正确(第1天) 以下是应用程序模块: @NgModule({ declarations: [AppComponent], imports: [BsDatepickerModule.forRoot() ], bootstrap: [AppComponent] }) export class AppModul

我在我的应用程序模块中集成了来自ngx引导的
BsDatepickerModule
,使用户可以按日期筛选列表。问题是,当我更改月份时(例如,从1月移动到2月,我得到的日期不正确(第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

怎么了


请注意,我正在转换日期,以获得格式为yyy-mm-dd

的日期,它写在MDN文档中,monthIndex是基于0的

因此,要将月份从日期构造函数转换为人类可读的月份,请在值中添加1

新日期().getMonth()+1

编辑:

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

编辑2:

我已经更新了演示。 您不应该将date转换为toISOString(),因为它是默认的(我认为)。 如果希望与本地日期相同,请选择toLocalDateString()

学分:

我的一个大四学生在工作


@Eliseo(在评论部分)

MDN文档中写道,monthIndex基于0

因此,要将月份从日期构造函数转换为人类可读的月份,请在值中添加1

新日期().getMonth()+1

编辑:

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

编辑2:

我已经更新了演示。 您不应该将date转换为toISOString(),因为它是默认的(我认为)。 如果希望与本地日期相同,请选择toLocalDateString()

学分:

我的一个大四学生在工作


@Eliseo(在评论部分)

我记不清问题的确切位置,但这与从0开始的数组索引有关,也可能与从1.0-11开始使用的位置有关,但在数组中的其他位置使用1-12个月。我记不清问题的确切位置,但这与从0开始的数组索引有关,也可能与从0开始使用的其他位置有关在一个数组中,从1.0-11开始使用,但在其他数组中从1-12开始使用数月。我对月份没有问题!这是一个低于正确日期的日期问题与GTM有关。当您使用新日期(年、月、日)时。例如,在GTM+2中,您可能会遇到此问题,并且您会少得到一天。如果您使用新日期(年、月、日、12)你解决了这个问题problem@Eliseo,你能演示一下你刚才说的话吗?虽然我认为你说的可能是对的。@AkashPanigrahi,我不记得旧版本的angular或ngx引导程序或其他日期选择器是否有问题,但我肯定我对problem@Eliseo,那么到底是什么问题呢?问题出在哪里版本控制还是GTM问题?因为我认为GTM问题是合法的。我对月份没有问题!这是一个比正确日期低的日期问题与GTM有关。当你使用新日期(年、月、日)时,你可能会遇到这个问题,例如在GTM+2中,你会少一天。如果你使用新日期(年、月、日、12)你解决了这个问题problem@Eliseo,你能演示一下你刚才说的话吗?虽然我认为你说的可能是对的。@AkashPanigrahi,我不记得旧版本的angular或ngx引导程序或其他日期选择器是否有问题,但我肯定我对problem@Eliseo,那么到底是什么问题呢?问题出在哪里版本控制还是GTM问题?因为我认为GTM问题是合法的。