Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

882
Vistas
MUI Material-UI DatePicker formateo y configuración de problema de valor predeterminado

Tengo un pequeño problema y no he tenido mucha suerte para encontrar una solución. El MUI DatePicker parece tener un formato que tiene por defecto, para mostrar las fechas como

 Fri Oct dd yyyy HH:MM:SS GMT+HHMM (name of timezone here)

Sin embargo, necesito poder pasar una fecha en el formato de

yyyy-MM-ddThh:MM:ss+HH:mm que es (Date)T(Time)+(Timezone)

al componente, y luego volver a ser enviado en el mismo formato.

En algunos casos, el valor de este selector de fecha y hora no está establecido; en otros, sí lo está. Y no estoy seguro de cómo obtener el formato que necesito, ya que no tengo control sobre el formato de fecha que estoy recibiendo.

Parece que el componente puede analizar los datos que le doy y establecer el valor adecuado, pero los nuevos datos (si el valor cambia) están en un formato diferente.

editar: solo un ejemplo rápido para arriba.

 Data I get: 2020-10-11T15:56:28+11:00

Datos que genera el componente: { "$L": "en", "$u": undefined, "$d": Date Sun Oct 11 2020 15:56:28 GMT+1100 (Australian Eastern Daylight Time), "$x": {}, "$y": 2020, "$M": 9, "$D": 11, "$W": 0, "$H": 15, "$m": 56, … }

Código relevante para DateTimePicker:

 import React from 'react'; import TextField from '@mui/material/TextField'; import DateTimePicker from '@mui/lab/DateTimePicker'; export default function DateTimePickerComponent(props) { const [value, setValue] = React.useState(null); const onDatePicked = (event) => { setValue(event); let onlyDate = event.$d; props.onChange(onlyDate); console.log("Date Changed", event, onlyDate); }; React.useEffect(() => { if (props.initialValue !== 0 && value === null) { setValue(props.initialValue); console.log("Initial Date is", props.initialValue); } }, [props.initialValue, value, setValue]); return ( <DateTimePicker label={props.label} value={value} onChange={onDatePicked} renderInput={(params) => <TextField {...params} />} /> ); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Para dar formato a la fecha, use la propiedad inputFormat . Si está utilizando date-fns, puede ver esta tabla para saber cómo personalizar la cadena de formato:

 <DateTimePicker label={props.label} value={value} inputFormat="E MMM dd yyyy HH:MM:SS O" onChange={setValue} renderInput={(params) => <TextField {...params} fullWidth />} />

Si desea establecer el valor inicial en un componente que usa el modo controlado, debe inicializarlo en useState :

 const [value, setValue] = React.useState(initialDate);

Demostración de Codesandbox

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de investigar un poco, me señalaron el hecho de que DatePicker/DateTimePicker de MUI usa un formato de fecha básico (tal como lo formuló en la llamada al evento). Sin embargo, MUI lo analiza y lo muestra de manera diferente, así que todo lo que tenía que hacer era simplemente lo siguiente:

 let onlyDate = event.$d.toISOString();

esto devolvió la cadena de fecha y hora que necesitaba en el formato adecuado.

Si alguien se encuentra con esto en el futuro, mire esta página en la que terminé:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Tiene múltiples formas de analizar los datos y funciones para manipular la fecha/hora

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda