# gt-next: General Translation Next.js SDK: RelativeTime URL: https://generaltranslation.com/it/docs/next/api/components/relativetime.mdx --- title: RelativeTime description: Riferimento API per il componente RelativeTime --- {/* GENERATO AUTOMATICAMENTE: non modificare direttamente. Modifica invece il template in content/docs-templates/. */} ## Panoramica Il componente `` esegue il rendering di una stringa localizzata di tempo relativo, come "2 ore fa" o "tra 3 giorni". Supporta due modalità di utilizzo: seleziona automaticamente l'unità più adatta a partire da un `Date`, oppure consente di specificare esplicitamente un valore e un'unità. ```jsx {someDate} // Output: "2 ore fa" ``` Tutta la formattazione viene gestita localmente tramite l'API [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). `` può causare **errori di idratazione** nelle app con rendering lato server. Vedi [Come evitare gli errori di idratazione](#avoiding-hydration-errors) più sotto. ## Riferimento ### Props ### Descrizione | Nome della prop | Descrizione | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `children` | Un oggetto `Date`. Il componente seleziona automaticamente l'unità più adatta (secondi, minuti, ore, giorni, settimane, mesi o anni) e formatta il tempo relativo rispetto a `baseDate`. | | `date` | Un oggetto `Date` da cui calcolare il tempo relativo. Se vengono forniti sia `date` che `children`, `date` ha la precedenza. | | `value` | Un valore numerico esplicito per il tempo relativo (ad esempio `-1` per "ieri"). Deve essere usato insieme a `unit`. | | `unit` | L'unità di tempo (ad esempio `'second'`, `'minute'`, `'hour'`, `'day'`, `'week'`, `'month'`, `'year'`). Obbligatoria quando si usa `value`. | | `baseDate` | La data di riferimento per calcolare il tempo relativo. Per impostazione predefinita è `new Date()` al momento del rendering. **Imposta esplicitamente questo valore per evitare errori di idratazione** — vedi [sotto](#avoiding-hydration-errors). | | `options` | Opzioni di formattazione facoltative conformi alla specifica [`Intl.RelativeTimeFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). Per impostazione predefinita, usa `numeric: 'auto'` e `style: 'long'`. | | `locales` | Impostazioni regionali facoltative per specificare l'impostazione regionale di formattazione. Se non vengono fornite, viene usata l'impostazione regionale dell'utente. Leggi di più su come specificare le impostazioni regionali [qui](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). | ### Restituisce `JSX.Element` contenente il tempo relativo formattato sotto forma di stringa, oppure `null` se non viene fornita alcuna data o valore. *** ## Esempi ### Selezione automatica dell'unità a partire da una Date Passa un `Date` come elemento figlio e il componente seleziona automaticamente l'unità più adatta. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; export default function PostTimestamp({ post }) { return ( {post.createdAt} // [!code highlight] ); // Output: "2 ore fa", "3 giorni fa", "tra 5 minuti", ecc. } ``` ### Uso della prop `date` Puoi anche passare la data tramite la prop `date` invece di `children`. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; export default function PostTimestamp({ post }) { return ( // [!code highlight] ); } ``` ### Valore e unità espliciti Specifica un valore e un'unità esatti, come nell'API `Intl.RelativeTimeFormat`. ```jsx title="Reminder.jsx" copy import { RelativeTime } from 'gt-next'; export default function Reminder() { return (

Your trial ends . // [!code highlight]

); // Output: "La tua prova termina tra 3 giorni." } ``` ### Specificare le impostazioni regionali Visualizza il tempo relativo per una specifica impostazione regionale. ```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" } ``` ### Tradurre RelativeTime Avvolgi `` in un componente `` per includerlo in una frase tradotta. ```jsx title="Comment.jsx" copy import { T, RelativeTime } from 'gt-next'; export default function Comment({ comment }) { return ( Posted {comment.createdAt} // [!code highlight] ); } ``` ### Opzioni di formattazione personalizzate Controlla il formato di output con le opzioni di `Intl.RelativeTimeFormat`. ```jsx title="NumericTimestamp.jsx" copy import { RelativeTime } from 'gt-next'; export default function NumericTimestamp({ date }) { return ( {date} ); // Con numeric: 'always', restituisce "1 giorno fa" invece di "ieri" } ``` *** ## Evitare gli errori di idratazione Poiché `` calcola il tempo relativo localmente, può produrre **output diversi lato server e lato client**. Quando React confronta l'HTML renderizzato sul server con il rendering del client e i due non corrispondono, si verifica un errore di idratazione. In genere questo accade quando: * **`baseDate` usa `new Date()` come valore predefinito al momento del rendering.** Il server esegue il rendering in un dato momento, poi il client esegue l'idratazione alcuni secondi (o più) dopo. Se il tempo relativo passa all'unità successiva tra questi due momenti (ad esempio, "59 seconds ago" → "1 minute ago"), l'output non corrisponderà. * **L'impostazione regionale predefinita è diversa nei vari ambienti.** Se l'impostazione regionale predefinita del server non corrisponde a quella del client, la stringa formattata potrebbe essere diversa (ad esempio, "hace 2 horas" vs "2 hours ago"). ### Come risolvere **Imposta un `baseDate` esplicito** per garantire che server e client calcolino lo stesso tempo relativo: ```jsx const now = new Date(); // calcolato una volta, passato sia al server che al client {post.createdAt} ``` **Specifica `locales` in modo esplicito** per evitare discrepanze tra impostazioni regionali: ```jsx {post.createdAt} ``` Fissando sia l'impostazione regionale sia la data di riferimento, il server e il client produrranno sempre la stessa stringa formattata. ## Note * Il componente `` è un componente variabile che formatta valori temporali relativi. * Quando usi la modalità automatica (con un `Date`), il componente seleziona automaticamente l'unità più appropriata. * Il componente usa [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) internamente. * Le opzioni di formattazione predefinite sono `numeric: 'auto'` e `style: 'long'`. ## Passaggi successivi * Per maggiori dettagli ed esempi d'uso del componente `` e di altri componenti variabili come ``, ``, `` e ``, consulta la documentazione [Utilizzo dei componenti variabili](/docs/next/guides/variables).