# gt-next: General Translation Next.js SDK: RelativeTime URL: https://generaltranslation.com/fr/docs/next/api/components/relativetime.mdx --- title: RelativeTime description: Référence API du composant RelativeTime --- {/* GÉNÉRÉ AUTOMATIQUEMENT : ne modifiez pas ce fichier directement. Modifiez plutôt le template dans content/docs-templates/. */} ## Vue d’ensemble Le composant `` affiche une chaîne de caractères localisée au format de temps relatif, comme "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’un `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é en local à 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 de 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 formate la date en temps relatif par rapport à `baseDate`. | | `date` | Un objet `Date` servant à calculer le temps relatif. Si `date` et `children` sont tous deux fournis, `date` est prioritaire. | | `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 utilisée pour calculer le temps relatif. La valeur par défaut est `new Date()` 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` | `locales` facultatifs pour spécifier le paramètre régional de formatage. Si aucune valeur n’est fournie, le paramètre régional de l’utilisateur est utilisé. Pour en savoir plus sur la façon de spécifier `locales`, cliquez [ici](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). | ### Valeur de retour `JSX.Element` contenant le temps relatif formaté, représenté sous forme de chaîne de caractères, ou `null` si aucune date ni valeur n’est fournie. *** ## Exemples ### Sélection automatique de l’unité à partir d’une Date Passez une `Date` comme enfant et le composant sélectionne automatiquement l’unité la plus adaptée. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; 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` au lieu de `children`. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; export default function PostTimestamp({ post }) { return ( // [!code highlight] ); } ``` ### Valeur et unité explicites Spécifiez une valeur exacte et une unité, à l’image de l’API `Intl.RelativeTimeFormat`. ```jsx title="Reminder.jsx" copy import { RelativeTime } from 'gt-next'; 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 pour un paramètre régional donné. ```jsx title="FrenchTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; export default function FrenchTimestamp({ date }) { return ( {date} // [!code highlight] ); // Output: "il y a 2 heures" } ``` ### Traduire RelativeTime Entourez `` d’un composant `` pour l’inclure dans une phrase traduite. ```jsx title="Comment.jsx" copy import { T, RelativeTime } from 'gt-next'; export default function Comment({ comment }) { return ( Posted {comment.createdAt} // [!code highlight] ); } ``` ### Options de formatage personnalisées Contrôlez le format de sortie à l’aide des options de `Intl.RelativeTimeFormat`. ```jsx title="NumericTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; 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 client et qu’ils ne correspondent pas, une erreur d’hydratation se produit. Cela se produit généralement lorsque : * **`baseDate` prend par défaut la valeur `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 change d’unité entre ces deux moments (par ex., "59 seconds ago" → "1 minute ago"), 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 différer (par ex., "hace 2 horas" vs "2 hours ago"). ### Comment résoudre ce 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 formate 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 [Utilisation des composants variables](/docs/next/guides/variables).