Estoy tan confundida de lo que está pasando. Acabo de implementar react-native-datetimepicker/datetimepicker para que un usuario seleccione su cumpleaños.
Si selecciono el 8 de junio de 2000 -> la fecha devuelta es 2000-06-09T00:00:00.000Z , lo que significa que el cumpleaños de los usuarios está fijado para el 9 de junio de 2000.
aquí está el elemento:
<DateTimePicker value={this.props.date} mode={this.props.mode} display="calendar" onChange={(event, date) => { this.handleDatePicked(event, date) }} /> async handleDatePicked(event, date) { console.log(new Date(date)) await this.props.onSelect(this.props.propName, date) await this.changeState() } console.log(date) registros 2000-06-09T00:00:00.000Z
console.log(new Date(date)) registra 2000-06-09T00:00:00.000Z
¡PERO! console.log(new Date(date).getDate()) registra 8
Y cuando reabro el calendario, está puesto el 8 de junio de 2000.
🤯
Mi mente está explotando, ¿qué está pasando aquí? El 8 de junio de 2000 es solo para el ejemplo: está constantemente apagado por 1 día sin importar qué día, mes o año se seleccione. ¿Mi hipótesis tiene algo que ver con la zona horaria, tal vez? ¡Cualquier ayuda es muy apreciada!
Esto se debe a que Date.getDate() devuelve el día y el mes según la hora local . El objeto de fecha que ha proporcionado está configurado en hora UTC, lo que significa que cuando la fecha se convierte a su zona horaria local, en realidad es el día anterior.
Para solucionar este problema, configure la propiedad timeZoneOffsetInMinutes de su selector de fecha.
Desafortunadamente, este accesorio tiene problemas de implementación conocidos en Android. Una buena alternativa puede ser evitar el accesorio por completo y, en su lugar, usar una biblioteca de fechas como date-fns para manipular la zona horaria del objeto de fecha de salida.