Así que tengo este caso de uso en el que un usuario debería poder ingresar datos en un sitio de reacción que tiene order_fulfilment_datetime_str que se supone que es una cadena de fecha y hora RFC 3339 de acuerdo con las especificaciones de la API en la que se publicaría.
Entonces, esencialmente, un usuario (en cualquier zona horaria) selecciona una fecha y hora (futuras) (usando un complemento como react-datepicker) asumiendo que la fecha y hora estará en PST/PDT. Pero el complemento y el objeto de fecha de JavaScript devuelven la fecha y hora seleccionada en la zona horaria del navegador. Así que tengo dos cosas que resolver:
Actualmente, lo que estoy tratando de hacer es simplemente obtener la fecha, las horas y los minutos individuales usando getHours() , getMinutes() , getDate() para formar la cadena. Pero, de nuevo, ¿cómo sabré si esta fecha y hora seleccionada tiene una compensación de -8 o -7 (es decir, PST/PDT)?
Revisé la biblioteca date-fns y date-fns-tz , pero no estaba seguro de cómo resolver este problema con estos.
Puede usar la biblioteca de luxon para configurar la zona horaria global que desee, y luego, cada vez que un usuario seleccione una fecha y hora con un selector de fecha y hora, simplemente puede convertirla en la zona horaria que desee.
import { Settings } from "luxon" Settings.defaultZone = <time-zone>El fragmento de código anterior establecerá una zona predeterminada para la aplicación
Ahora, cuando un usuario selecciona una fecha y hora, conviértala a la zona horaria que desee utilizando el siguiente código
DateTime.fromISO(dateTimeValue, { setZone: true})