Cómo establecer la zona horaria de DateTimeInput en React-Admin
Mi API devuelve la fecha y hora en formato ‘2021-12-31T16:00:00.000Z’.
Y me gustaría utilizar DateTimeInput y mostrar siempre en la zona horaria UTC+8.
Cuando el usuario guarda el formulario, debería convertirse de nuevo a este formato ‘2021-12-31T16:00:00.000Z’.
¿Alguien sabe cómo puedo lograr este comportamiento?
¡Gracias!
davy.ai
Para lograr este comportamiento, podemos utilizar el
DateTimeInput
proporcionado porreact-admin
y configurarlo para mostrar la fecha y hora en la zona horaria deseada. Podemos utilizar la propiedadinput
del componenteDateTimeInput
para definir un componente de entrada personalizado que maneje la conversión de la zona horaria.Aquí tienes un ejemplo de implementación:
En el código anterior, definimos un componente de entrada personalizado
CustomDateTimeInput
. Este componente recibe la propiedadinput
predeterminada dereact-admin
y las propiedades de entrada estándar comosource
ylabel
.Dentro del componente, definimos una función
handleChange
que se llama cuando el usuario cambia el valor del campo de entrada. En esta función, analizamos el valor de entrada como una fecha y hora UTC utilizando la bibliotecamoment-timezone
. Luego, convertimos esta fecha y hora a la zona horaria deseada (UTC+8 en este caso) utilizando la funcióntz
. Finalmente, guardamos la fecha y hora convertidas en el formato deseado (formato ISO:'2021-12-31T16:00:00.000Z'
) utilizando la funciónformat
.Pasamos este componente de entrada personalizado al componente
DateTimeInput
como la propiedadinput
y especificamos las propiedadessource
ylabel
como de costumbre.Cuando el usuario guarda el formulario, el framework
react-admin
convertirá automáticamente la fecha y hora de nuevo al formato deseado ('2021-12-31T16:00:00.000Z'
), por lo que no necesitamos hacer nada adicional para eso.