Estoy tratando de pasar un objeto de fecha de Javascript a la API en formato BST. Sin embargo, siempre lo convierte a GMT cuando lo pasa a la API.
Objeto API Swagger:
startDate: type: string format: date-time endDate: type: string format: date-timeModelo de TypeScript generado automáticamente:
startDate?: Date; endDate?: Date;Estoy usando un NgbDate para seleccionar la fecha de inicio y la fecha de finalización.
<input class="form-control" id="txtStartDate" name="txtStartDate" [ngModel]="startDate" (dateSelect)="onStartDateSelect($event)" ngbDatepicker #startDatePicker="ngbDatepicker" readonly #txtStartDate="ngModel"> onStartDateSelect(date: NgbDate) { this.startDate = new Date(date.year, date.month-1, date.day); }Durante la depuración, encontré this.startDate como '2021-08-31T23:00:00.000Z'. ¿Cómo puedo cambiarlo a '2021-09-01T00:00:00.000' al pasarlo a la API? (¿Es responsabilidad de la API convertir la hora GMT a BST?)
No sé NgbDate pero he usado el selector de fecha de material angular y devuelve una fecha como 00:00 hora local. Luego, esto se almacena en el objeto Fecha de Javascript en hora UTC, por lo que si BST está 1 hora antes de UTC, se almacenará como 23:00 del día anterior. Esta hora UTC se pasará a las API, etc. Para corregir esto, ajusté la fecha devuelta por el selector de fechas para que sea la medianoche UTC antes de pasarla. Usé el método Date getTimeOffset para hacer esto:
(date) => { return new Date( date.getTime() - date.getTimezoneOffset() * 60 * 1000, ); }