# General Translation React SDKs (gt-react, gt-next): RelativeTime URL: https://generaltranslation.com/es/docs/react/reference/components/relative-time.mdx --- title: RelativeTime description: Da formato a un tiempo relativo localizado, como "hace 2 horas", con General Translation gt-react. Referencia de la API de RelativeTime. --- El componente `` muestra un tiempo relativo localizado, como "hace 2 horas" o "en 3 días". Funciona seleccionando automáticamente la unidad más adecuada a partir de un `Date` o a partir de un valor y una unidad explícitos. *Disponible en `gt-react`, `gt-next`, `gt-tanstack-start` y `gt-react-native`. Los ejemplos importan desde `gt-react`; en su lugar, importa desde el paquete de tu framework.* ## Descripción general [#overview] Pasa una `Date` como `children` y `` selecciona la unidad más adecuada y formatea el tiempo en relación con `baseDate`. ```tsx {someDate} // Salida: "2 hours ago" ``` Todo el formato se gestiona localmente con [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). *Nota: `` puede causar errores de hidratación de React en aplicaciones renderizadas en el servidor. Consulta [Cómo evitar errores de hidratación](#hydration).* ## Cómo funciona [#how-it-works] * **Dos modos.** Proporciona un `Date` (mediante `children` o `date`) y el componente seleccionará automáticamente la unidad más adecuada en función de `baseDate`, o bien proporciona un `value` y una `unit` explícitos, igual que en `Intl.RelativeTimeFormat`. * **Formato local.** El tiempo relativo se calcula y se formatea en el navegador; el valor nunca se envía a la API de General Translation. * **No renderiza nada sin datos de entrada.** Si no se proporciona ni una fecha ni un valor, el componente renderiza `null`. ## Props [#props] | Prop | Descripción | Type | Opcional | Predeterminado | | ------------------------ | ----------------------------------------------------------------------- | -------------------------------- | -------- | ------------------------------------ | | [`children`](#children) | Un `Date` a partir del cual calcular el tiempo relativo. | `Date` | Sí | — | | [`date`](#date) | Un `Date` a partir del cual calcular. Tiene prioridad sobre `children`. | `Date` | Sí | — | | [`value`](#value) | Cantidad numérica explícita. Requiere `unit`. | `number` | Sí | — | | [`unit`](#unit) | Unidad de tiempo, usada con `value`. | `Intl.RelativeTimeFormatUnit` | Sí | — | | [`baseDate`](#base-date) | Fecha de referencia. | `Date` | Sí | `new Date()` | | [`options`](#options) | Opciones de `Intl.RelativeTimeFormat`. | `Intl.RelativeTimeFormatOptions` | Sí | `{ numeric: 'auto', style: 'long' }` | | [`locales`](#locales) | Configuración regional que reemplaza la usada para el formato. | `string[]` | Sí | Configuración regional activa | | [`name`](#name) | Nombre de la variable de la entrada. | `string` | Sí | — | ### `children` [#children] **Tipo** `Date` · **Opcional** Un objeto `Date`. El componente selecciona automáticamente la unidad más adecuada (de segundos a años) y da formato al tiempo relativo a `baseDate`. ### `date` [#date] **Tipo** `Date` · **Opcional** Una `Date` a partir de la cual calcular el tiempo relativo. Cuando se proporcionan tanto `date` como `children`, `date` tiene prioridad. ### `value` [#value] **Tipo** `number` · **Opcional** Un valor numérico explícito para el tiempo relativo (por ejemplo, `-1` para "ayer"). Debe usarse junto con `unit`. ### `unit` [#unit] **Tipo** `Intl.RelativeTimeFormatUnit` · **Opcional** La unidad de tiempo, como `'second'`, `'minute'`, `'hour'`, `'day'`, `'week'`, `'month'` o `'year'`. Es obligatorio al usar `value`. ### `baseDate` [#base-date] **Tipo** `Date` · **Opcional** · **Predeterminado** `new Date()` La fecha base con respecto a la que se mide el tiempo relativo. De forma predeterminada, es `new Date()` en el momento del render. Establécela explícitamente para evitar errores de hidratación; consulta [más abajo](#hydration). ### `options` [#options] **Type** `Intl.RelativeTimeFormatOptions` · **Opcional** · **Predeterminado** `{ numeric: 'auto', style: 'long' }` Opciones de formato según la especificación de [`Intl.RelativeTimeFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). ### `locales` [#locales] **Tipo** `string[]` · **Opcional** · **Predeterminado** Configuración regional activa Locales a los que se les aplicará formato. Cuando se omite, se usa la configuración regional activa. Consulta el [argumento `locales`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). ### `name` [#name] **Tipo** `string` · **Opcional** Un nombre opcional para la entrada, utilizado como metadatos. ## Ejemplos [#examples] ```tsx title="PostTimestamp.tsx" import { RelativeTime } from 'gt-react'; export default function PostTimestamp({ post }) { return {post.createdAt}; // [!code highlight] // Salida: "hace 2 horas", "hace 3 días", "en 5 minutos", etc. } ``` ```tsx title="PostTimestamp.tsx" import { RelativeTime } from 'gt-react'; export default function PostTimestamp({ post }) { return ; // [!code highlight] } ``` ```tsx title="Reminder.tsx" import { RelativeTime } from 'gt-react'; export default function Reminder() { return (

Your trial ends . // [!code highlight]

); // Salida: "Your trial ends in 3 days." } ``` ```tsx title="Comment.tsx" import { T, RelativeTime } from 'gt-react'; export default function Comment({ comment }) { return ( Posted {comment.createdAt} // [!code highlight] ); } ``` ```tsx title="NumericTimestamp.tsx" import { RelativeTime } from 'gt-react'; export default function NumericTimestamp({ date }) { return ( {date} ); // Con numeric: 'always', produce "1 day ago" en lugar de "yesterday" } ``` ## Cómo evitar errores de hidratación [#hydration] Como `` calcula el tiempo relativo localmente, puede generar una salida distinta en el servidor y en el cliente, lo que provoca un error de hidratación. Esto suele ocurrir cuando: * **`baseDate` usa `new Date()` de forma predeterminada en el momento de renderizar.** El servidor y el cliente renderizan en momentos ligeramente distintos. Si el tiempo relativo cruza un límite de unidad entre ambos (por ejemplo, "hace 59 segundos" → "hace 1 minuto"), la salida no coincidirá. * **La configuración regional predeterminada es distinta entre entornos**, lo que produce cadenas diferentes (por ejemplo, "hace 2 horas" frente a "2 hours ago"). Fija tanto la configuración regional como un `baseDate` compartido para que el servidor y el cliente siempre generen la misma cadena: ```tsx const now = new Date(); // se calcula una vez y se pasa tanto al servidor como al cliente {post.createdAt} ```