# react-native: RelativeTime URL: https://generaltranslation.com/it/docs/react-native/api/components/relativetime.mdx --- title: RelativeTime description: Riferimento API del componente RelativeTime --- {/* GENERATO AUTOMATICAMENTE: non modificare direttamente. Modifica il template in content/docs-templates/. */} ## Panoramica Il componente `` esegue il rendering di una stringa di tempo relativo localizzata, ad esempio "2 ore fa" o "tra 3 giorni". Supporta due modalità d'uso: selezionare automaticamente l'unità più appropriata a partire da un `Date`, oppure 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 **errore di idratazione di React** nelle app renderizzate sul server. Vedi [Come evitare gli erroi di idratazione](#avoiding-hydration-errors) qui sotto. ## Riferimento ### Proprietà ### Descrizione | Nome prop | Descrizione | | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `children` | Un oggetto `Date`. Il componente seleziona automaticamente l'unità migliore (secondi, minuti, ore, giorni, settimane, mesi o anni) e formatta il tempo relativo rispetto a `baseDate`. | | `date` | Un oggetto `Date` a partire dal quale calcolare il tempo relativo. Se vengono forniti sia `date` sia `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. **Impostala esplicitamente per evitare errori di idratazione** — vedi [sotto](#avoiding-hydration-errors). | | `options` | Opzioni di formattazione facoltative che seguono la specifica [`Intl.RelativeTimeFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). Per impostazione predefinita sono `numeric: 'auto'` e `style: 'long'`. | | `locales` | Impostazioni regionali facoltative per specificare l'impostazione regionale usata per la 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 come stringa, oppure `null` se non è stata fornita alcuna data o valore. *** ## Esempi ### Selezione automatica dell'unità da un Date Passa un `Date` come `children` e il componente seleziona automaticamente l'unità più adatta. ```jsx title="PostTimestamp.jsx" copy import { RelativeTime } from 'gt-react-native'; 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-react-native'; export default function PostTimestamp({ post }) { return ( // [!code highlight] ); } ``` ### Valore e unità espliciti Specifica un valore esatto e una unità, in linea con l'API `Intl.RelativeTimeFormat`. ```jsx title="Reminder.jsx" copy import { RelativeTime } from 'gt-react-native'; export default function Reminder() { return (

Your trial ends . // [!code highlight]

); // Output: "La tua prova termina tra 3 giorni." } ``` ### Specificare le impostazioni regionali Mostra il tempo relativo in una specifica impostazione regionale. ```jsx title="FrenchTimestamp.jsx" copy import { RelativeTime } from 'gt-react-native'; export default function FrenchTimestamp({ date }) { return ( {date} // [!code highlight] ); // Output: "il y a 2 heures" } ``` ### Tradurre RelativeTime Racchiudi `` nel componente `` per includerlo in una frase tradotta. ```jsx title="Comment.jsx" copy import { T, RelativeTime } from 'gt-react-native'; export default function Comment({ comment }) { return ( Posted {comment.createdAt} // [!code highlight] ); } ``` ### Opzioni di formattazione personalizzate Controlla lo stile dell'output con le opzioni di `Intl.RelativeTimeFormat`. ```jsx title="NumericTimestamp.jsx" copy import { RelativeTime } from 'gt-react-native'; 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 sul server e sul client**. Quando React confronta l'HTML generato sul server con il rendering lato client e i due non corrispondono, si verifica un errore di idratazione. In genere questo accade quando: * **Per impostazione predefinita, `baseDate` è `new Date()` al momento del rendering.** Il server esegue il rendering in un determinato momento, poi il client esegue l'idratazione alcuni secondi (o più) dopo. Se il tempo relativo passa a un'altra unità tra quei 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 disallineamenti delle 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ù adatta. * Il componente si basa su [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). * 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/react-native/guides/variables).