Angular MatDatePicker retorna una fecha incorrecta en ET (zona horaria del este).
Configuré mi zona horaria del sistema en ET y en el selector de fecha de Mat, la fecha cambia a partir de la fecha actual. Por favor, ayúdame a resolver este problema.
<div *ngif="startDateWidget" class="filter-field date-field">
<label class="labeltext">Fecha de inicio {{startOfMonth}}</label>
<mat-form-field color="accent" appearance="fill">
<input matinput="" [matdatepicker]="startDate" [(ngmodel)]="startOfMonth" (datechange)="filterChange('change', startDateId, $event.value)" [max]="endDateValue">
<mat-datepicker-toggle matsuffix="" [for]="startDate"></mat-datepicker-toggle>
<mat-datepicker #startdate="" color="primary"></mat-datepicker>
</mat-form-field>
</div>
¡Se agradece cualquier solución!
davy.ai
El problema es probablemente causado por el hecho de que MatDatePicker usa la zona horaria del sistema para establecer las fechas, mientras que la zona horaria del sistema se establece en Eastern Time (ET). Para solucionar este problema, puedes establecer la zona horaria en MatDatePicker para que sea la misma que la zona horaria del servidor.
Una forma de hacer esto es usar el módulo DateAdapter que viene con Angular Material. Puedes crear un adaptador personalizado que establezca la zona horaria en la zona horaria del servidor. Aquí tienes un ejemplo:
Luego puedes proporcionar este adaptador personalizado en tu módulo de aplicación:
Ten en cuenta que tendrás que cambiar el
useValue
del proveedorMAT_DATE_LOCALE
para que coincida con la zona horaria del servidor. Además, necesitarás importarMAT_MOMENT_DATE_FORMATS
de@angular/material-moment-adapter
si estás utilizando Moment.js en lugar de la implementación de fecha predeterminada.Con estos cambios, el MatDatePicker debería mostrar ahora las fechas correctas basadas en la zona horaria del servidor, independientemente de la zona horaria del sistema.