遇到烦人的问题:momentjs在不同时区用mat-datepicker放了一天假?

时间:2018-09-27 03:19:00

标签: javascript typescript angular5 momentjs angular-moment

场景: 加载组件后,一切正常。日期不早于1。 但是在我使用mat-datepicker更改日期或手动更改日期后,该日期已关闭1.。

我可以看到其时区问题。使用-4:00偏移时区,这会给我带来错误的行为,但是在我的时区中,它可以正常工作(+5:30)。

enter image description here

请帮助!

HTML:

<input id="startDatePicker" matInput [matDatepicker]="startDatePicker" [(ngModel)]="model.start" placeholder="mm/dd/yyyy" class="form__dateInput"/>
                <mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
                <mat-datepicker #startDatePicker></mat-datepicker>   

ModelClass文件:

export class Query {
    start = moment();
    end = moment();


    public toParams(): HttpParams {
     let params = new HttpParams();
     start.local();
     end.local();
     this.start.startOf('day');
     this.end.endOf('day'); 
     params = params.set('start', this.start.toISOString());
     params = params.set('end', this.end.toISOString());
     }
    }

1 个答案:

答案 0 :(得分:1)

您可以通过提供MAT_MOMENT_DATA_ADAPTER_OPTIONS并将其设置为useUtc:true,来更改默认行为以将日期解析为UTC。

@NgModule({
imports: [MatDatepickerModule, MatMomentDateModule],
providers: [
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
]
})