¿Cómo convertir el formato de fecha y hora de Luxon en un formato de texto o números?
Estoy utilizando el siguiente código para configurar un reloj Luxon para mi proyecto:
import { DateTime } from 'luxon';
import React, { useEffect, useState } from 'react';
interface IProps {
timezone: string;
format: string;
calendar?: string;
daysOffset?: number;
}
const LiveDateTime: React.FC<iprops> = ({
timezone,
daysOffset,
format,
calendar,
}) => {
const [timeLive, setTimeLive] = useState<datetime>(DateTime.local());
useEffect(() => {
const interval = setInterval(() => {
setTimeLive(
DateTime.local()
.setZone(timezone)
.reconfigure({ outputCalendar: calendar })
.plus({ days: daysOffset })
);
}, 1000);
return () => clearInterval(interval);
}, [timezone]);
return <span>{timeLive?.toFormat(format)}</span>;
};
export default LiveDateTime;
Ahora, estoy usando este componente en otro lugar para definir el número del mes de la fecha actual:
const month = <livedatetime timezone="{place?.timezone}" format="M"></livedatetime>; // Esto devuelve '12' como un número en la interfaz de usuario (para diciembre)
console.log(month)
getData(month); // Esta función debería devolver algunos datos basados en el mes dado.
// En cambio, obtengo un error en esta línea que dice: 'El argumento de tipo 'Element' no es asignable al parámetro de tipo 'number'.
Cuando imprimo esto en la consola, obtengo un objeto react.element completo. Necesito poder usar ’12’ como un número (para diciembre) en getData()
para la variable month
. ¿Cómo puedo convertir este objeto en un tipo ‘number’ o ‘string’ si es necesario?
PD: Intenté usar parseInt()
, pero no funciona.
davy.ai
Para extraer el valor numérico del objeto del elemento React devuelto por
LiveDateTime
, puede utilizar la propiedad.props
para acceder a la propiedadchildren
, que contendría la cadena de fecha formateada, y luego utilizarparseInt()
para convertirla en un número. Así es como puede modificar el código para extraer el número del mes:Esto debería mostrar el número del mes como un tipo numérico que se puede pasar como argumento a
getData()
. Asegúrese de manejar casos de error donde la propiedadchildren
no sea una cadena de número válida.