# gt-react: General Translation React SDK: RelativeTime URL: https://generaltranslation.com/fr/docs/react/api/components/relativetime.mdx --- title: RelativeTime description: Référence de l’API du composant RelativeTime --- {/* GÉNÉRÉ AUTOMATIQUEMENT : ne modifiez pas directement. Modifiez plutôt le template dans content/docs-templates/. */} ## Vue d’ensemble Le composant `` affiche une chaîne de caractères localisée de temps relatif, telle que "il y a 2 heures" ou "dans 3 jours". Il prend en charge deux modes d’utilisation : sélectionner automatiquement l’unité la plus appropriée à partir d’une `Date`, ou spécifier explicitement une valeur et une unité. ```jsx {someDate} // Résultat : "il y a 2 heures" ``` Le formatage est entièrement géré localement à l’aide de l’API [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). `` peut provoquer des **erreurs d’hydratation React** dans les applications rendues côté serveur. Voir [Éviter les erreurs d’hydratation](#avoiding-hydration-errors) ci-dessous. ## Référence ### Props ### Description | Nom de la propriété | Description | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `children` | Un objet `Date`. Le composant sélectionne automatiquement l’unité la plus appropriée (secondes, minutes, heures, jours, semaines, mois ou années) et met en forme le temps relatif par rapport à `baseDate`. | | `date` | Un objet `Date` à partir duquel calculer le temps relatif. Si `date` et `children` sont tous deux fournis, `date` prévaut. | | `value` | Une valeur numérique explicite pour le temps relatif (par exemple, `-1` pour « hier »). Doit être utilisée avec `unit`. | | `unit` | L’unité de temps (par exemple, `'second'`, `'minute'`, `'hour'`, `'day'`, `'week'`, `'month'`, `'year'`). Obligatoire lors de l’utilisation de `value`. | | `baseDate` | La date de base pour calculer le temps relatif. Par défaut, `new Date()` est utilisé au moment du rendu. **Définissez-la explicitement pour éviter les erreurs d’hydratation** — voir [ci-dessous](#avoiding-hydration-errors). | | `options` | Options de formatage facultatives conformes à la spécification [`Intl.RelativeTimeFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). Les valeurs par défaut sont `numeric: 'auto'` et `style: 'long'`. | | `locales` | Paramètres régionaux facultatifs pour définir le paramètre régional de formatage. S’ils ne sont pas fournis, le paramètre régional de l’utilisateur est utilisé. Pour en savoir plus sur la manière de spécifier les paramètres régionaux, consultez [ce lien](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). | ### Renvoie `JSX.Element` contenant le temps relatif formaté sous forme de chaîne de caractères, ou `null` si aucune date ou valeur n’est fournie. *** ## Exemples ### Sélection automatique de l’unité à partir d’une `Date` Passez une `Date` comme enfant et le composant choisit automatiquement l’unité la plus adaptée. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-react'; export default function PostTimestamp({ post }) { return ( {post.createdAt} // [!code highlight] ); // Résultat : "il y a 2 heures", "il y a 3 jours", "dans 5 minutes", etc. } ``` ### Utilisation de la propriété date Vous pouvez également transmettre la date via la propriété `date` plutôt que via `children`. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-react'; export default function PostTimestamp({ post }) { return ( // [!code highlight] ); } ``` ### Valeur et unité explicites Spécifiez une valeur et une unité précises, comme dans l’API `Intl.RelativeTimeFormat`. ```jsx title="Reminder.jsx" copy import { RelativeTime } from 'gt-react'; export default function Reminder() { return (

Your trial ends . // [!code highlight]

); // Résultat : "Your trial ends in 3 days." } ``` ### Spécifier les paramètres régionaux Affichez le temps relatif dans un paramètre régional spécifique. ```jsx title="FrenchTimestamp.jsx" copy import { RelativeTime } from 'gt-react'; export default function FrenchTimestamp({ date }) { return ( {date} // [!code highlight] ); // Résultat : "il y a 2 heures" } ``` ### Traduction de RelativeTime Encapsulez `` dans un composant `` pour l’intégrer dans une phrase traduite. ```jsx title="Comment.jsx" copy import { T, RelativeTime } from 'gt-react'; export default function Comment({ comment }) { return ( Posted {comment.createdAt} // [!code highlight] ); } ``` ### Options de formatage personnalisées Contrôlez le rendu avec les options de `Intl.RelativeTimeFormat`. ```jsx title="NumericTimestamp.jsx" copy import { RelativeTime } from 'gt-react'; export default function NumericTimestamp({ date }) { return ( {date} ); // Avec numeric: 'always', affiche "il y a 1 jour" au lieu de "hier" } ``` *** ## Éviter les erreurs d’hydratation Comme `` calcule le temps relatif localement, il peut produire **un résultat différent côté serveur et côté client**. Lorsque React compare le HTML généré côté serveur au rendu côté client et qu’ils ne correspondent pas, cela provoque une erreur d’hydratation. Cela se produit généralement dans les cas suivants : * **`baseDate` utilise par défaut `new Date()` au moment du rendu.** Le serveur effectue le rendu à un instant donné, puis le client s’hydrate quelques secondes (ou plus) plus tard. Si le temps relatif franchit une limite d’unité entre ces deux instants (par ex., "il y a 59 secondes" → "il y a 1 minute"), le résultat ne correspondra pas. * **Le paramètre régional par défaut diffère selon l’environnement.** Si le paramètre régional par défaut du serveur ne correspond pas à celui du client, la chaîne de caractères formatée peut être différente (par ex., "hace 2 horas" vs "2 hours ago"). ### Comment corriger le problème **Définissez un `baseDate` explicite** pour garantir que le serveur et le client calculent le même temps relatif : ```jsx const now = new Date(); // calculé une fois, transmis au serveur et au client {post.createdAt} ``` **Spécifiez explicitement `locales`** pour éviter les discordances de paramètres régionaux : ```jsx {post.createdAt} ``` En fixant à la fois le paramètre régional et la date de référence, le serveur et le client produiront toujours la même chaîne de caractères formatée. ## Remarques * Le composant `` est un composant variable qui assure le formatage des valeurs de temps relatif. * En mode auto (avec un `Date`), le composant sélectionne automatiquement l’unité la plus appropriée. * Le composant utilise [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) en interne. * Les options de formatage par défaut sont `numeric: 'auto'` et `style: 'long'`. ## Étapes suivantes * Pour plus de détails et d’exemples d’utilisation du composant `` et d’autres composants variables comme ``, ``, `` et ``, consultez la documentation [Utiliser les composants variables](/docs/react/guides/variables).