这可能是时区的问题。您可以使用以下代码来手动设置时区:
import { MAT_DATE_LOCALE, MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core'; import { MAT_MOMENT_DATE_FORMATS, MomentDateAdapter } from '@angular/material-moment-adapter'; import * as moment from 'moment';
export const MY_FORMATS = { parse: { dateInput: 'LL', }, display: { dateInput: 'LL', monthYearLabel: 'MMM YYYY', dateA11yLabel: 'LL', monthYearA11yLabel: 'MMMM YYYY', }, };
@Component({ providers: [ { provide: MAT_DATE_LOCALE, useValue: 'en-US' }, { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS }, { provide: DateAdapter, useClass: MomentDateAdapter }, ], }) export class ExampleComponent {
constructor(private dateAdapter: DateAdapter
ngOnInit() { // set the timezone to the local timezone moment.tz.setDefault(this.dateAdapter.getTimeZone()); console.log(moment().tz()); } }
在上面的示例中,我们使用Moment.js和MomentDateAdapter来处理日期。我们手动设置时区为本地时区。您可以根据需要将其更改为其他时区。
使用上述代码后,您应该可以正确地更改Angular Material日期选择器中的日期。