PHP: formattare e visualizzare la data odierna in italiano

๎€ฃ

24 Marzo 2026

Programmazione PHP

Quando utilizziamo le date in un ambiente PHP/MySQL, queste si trovano generalmente in due formati:

  • Y-m-d H:i:s nel database (il formato DATETIME)
  • d/m/Y in HTML, per la visualizzazione

Per cambiare il formato di una data, si passa generalmente attraverso una fase intermedia: il timestamp (l'ora Unix, o Posix time). Il timestamp rappresenta il numero di secondi trascorsi dal 1ยฐ gennaio 1970. Si utilizza la funzione strtotime per convertire una data in timestamp, poi la funzione date per convertire il timestamp nel formato desiderato.

<?php
$date = "2020-07-09 13:30:15";
echo date("d/m/Y", strtotime($date));
// Risultato: 09/07/2020
?>

Il problema con questo metodo รจ che siete limitati nel formato di partenza. In Europa, utilizziamo date nel formato d/m/Y (giorno/mese/anno), mentre la funzione strtotime si aspetta date nel formato americano m/d/Y (mese/giorno/anno).

  • Se il separatore รจ un trattino (-), la data รจ considerata europea
  • Se il separatore รจ una barra (/), la data รจ considerata americana

Riprendendo il nostro esempio, ma modificando semplicemente il separatore, non funziona piรน nulla:

<?php
$date = "09/07/2020 13:30:15";
echo date("d/m/Y", strtotime($date));
// Risultato: 07/09/2020 !!!
?>

[Attenzione] Dalla versione PHP 8.1 strftime รจ obsoleta. DateTime::format() fornisce una sostituzione indipendente dalla localizzazione. IntlDateFormatter::format() fornisce una sostituzione sensibile alla localizzazione.

Esempio:

<?php
$date = "09/07/2020 13:30:15";
$dateTime = DateTime::createFromFormat("d/m/Y H:i:s", $date);
echo $dateTime->format("d/m/Y");
// Risultato: 09/07/2020
?>

La soluzione a questo problema si trova nella classe DateTime. Questa classe permette anch'essa di lavorare sulle date, con la differenza che potete specificare il formato della data di partenza. Le date non saranno piรน limitate al formato americano.

<?php
class DateUtils {
    public static function formatDate($date, $inputFormat, $outputFormat) {
        $dateTime = DateTime::createFromFormat($inputFormat, $date);
        return $dateTime->format($outputFormat);
    }
}
echo DateUtils::formatDate("09/07/2020 13:30:15", "d/m/Y H:i:s", "d/m/Y");
?>

Visualizzare la data odierna in italiano con PHP

Per visualizzare la data odierna in italiano con PHP, dovete:

  • Definire le informazioni di localizzazione con la funzione setlocale.
  • Definire il fuso orario predefinito con la funzione date_default_timezone_set.
  • Utilizzare la funzione strftime per formattare la data con la configurazione locale.
  • Eventualmente utilizzare utf8_encode per gestire i problemi di accentuazione.

Nota: utf8_encode รจ necessario solo se non avete dichiarato la codifica da utilizzare nel vostro codice HTML:

<meta charset="utf-8">

Ecco il codice PHP per visualizzare una data in italiano:

<?php
setlocale(LC_TIME, "it_IT.utf8", "it_IT", "Italian_Italy");
date_default_timezone_set("Europe/Rome");
echo utf8_encode(strftime("%A %d %B %Y, %H:%M"));
// Risultato: giovedรฌ 09 luglio 2020, 13:31
?>

Nota: sostituite l'ultima riga con echo strftime('%A %d %B %Y, %H:%M'); se avete dichiarato la codifica nel vostro codice HTML.

Troverete maggiori informazioni riguardo strftime nella documentazione ufficiale PHP.

PHP 8.1: le funzioni strftime e gmstrftime sono obsolete

Le funzioni strftime e gmstrftime formattano un timestamp Unix basato sui parametri regionali correnti definiti con la funzione setlocale().

La funzione setlocale definisce i parametri regionali sul processo PHP, piuttosto che sul thread di lavoro corrente. Questo รจ problematico quando ci sono piรน thread di lavoro.

PHP propone delle API di formattazione dell'ora indipendenti e sensibili ai parametri regionali che sono migliori, piรน ricche e non soffrono di questo difetto. In particolare l'estensione intl e la classe IntlDateFormatter.

<?php
$formatter = new IntlDateFormatter("it_IT", IntlDateFormatter::FULL, IntlDateFormatter::SHORT);
echo $formatter->format(new DateTime());
// Risultato: giovedรฌ 9 luglio 2020, 13:31
?>
<?php
$formatter = new IntlDateFormatter(
    "it_IT",
    IntlDateFormatter::FULL,
    IntlDateFormatter::NONE,
    "Europe/Rome",
    IntlDateFormatter::GREGORIAN,
    "EEEE d MMMM yyyy"
);
echo $formatter->format(new DateTime());
?>

Soluzione

Per una formattazione di data/ora in PHP compatibile con i parametri regionali, utilizzate IntlDateFormatter::format (necessita dell'estensione intl):

In un caso d'uso reale e ideale, l'oggetto IntlDateFormatter viene istanziato una volta in base alle informazioni di localizzazione dell'utente (provenienti da una sessione, un campo del database utenti, ecc.).

<?php
$formatter = new IntlDateFormatter(
    "it_IT",
    IntlDateFormatter::LONG,
    IntlDateFormatter::SHORT,
    "Europe/Rome"
);
echo $formatter->format(new DateTime());
// Risultato: 9 luglio 2020, 13:31
?>

Per una formattazione di data/ora indipendente dai parametri regionali, utilizzate la funzione date() o DateTime::format / DateTimeImmutable::format:

<?php
echo date("d/m/Y H:i:s");
// oppure
echo (new DateTime())->format("d/m/Y H:i:s");
?>

DateTimeImmutable::format puรฒ anche formattare un oggetto DateTimeImmutable:

<?php
$date = new DateTimeImmutable("2020-07-09 13:30:15", new DateTimeZone("Europe/Rome"));
echo $date->format("d/m/Y H:i:s");
// Risultato: 09/07/2020 13:30:15
?>
Cat Dimension
Cat Dimension รจ un gioco di avventura disponibile su Steam: https://store.steampowered.com/app/1839780/Cat_Dimension

Articoli recenti

Commenti recenti

  1. Massimiliano Ferretti su I Commenti

    Mi permetto di aggiungere una mia considerazione personale che ho riportato dall'utilizzo di C#. Personalmente mi piace commentare funzioni e…

  2. Personalmente ritengo che utilizzare git porti sempre dei vantaggi anche per lo sviluppo solo. Giร  solo la possibilitร  di fare…

  3. ciao, il link a discord non รจ piu valido, vorrei utilizzare il materiale che hai pubblicato tempo fa, come faccio?

"

Itamde รจ anche una scuola di programmazione online.

Itamde

Impara ciรฒ che desideri, al tuo ritmo

0 Commenti

Invia Un Commento

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *

Potrebbe interessarti anche...

Web

Dietro le quinte di un progetto di sviluppo

Quando si visita un sito web finito, si vede solo il risultato finale: pagine pulite, animazioni fluide, contenuti ben organizzati. Ma dietro questa facciata si nasconde un processo di creazione ben piรน complesso, fatto di riflessione strategica, decisioni tecniche e...

Immagine per un blog

Quali sono gli strumenti indispensabili per uno sviluppatore web?

Il mestiere dello sviluppatore web evolve costantemente, e con esso gli strumenti necessari per lavorare in modo efficiente. Tra editor di codice, framework, strumenti di debug e piattaforme di deployment, la scelta puรฒ sembrare schiacciante sia per i principianti che...

HTML - Programmazione di Videogiochi

Ricreare Snake in HTML e JavaScript vanilla

A volte i progetti migliori nascono senza pretese particolari, solo per il piacere di scrivere codice e di rituffarsi nei classici dei videogiochi. รˆ esattamente lo spirito che ha guidato la creazione di questa versione retrรฒ di Snake, realizzata interamente in HTML e...

Rimani aggiornato sulle ultime notizie e novitร 

Accedi ai contenuti riservati

Scopri il dietro le quinte dei nostri progetti, risorse esclusive e lo stato di avanzamento delle nostre creazioni in tempo reale.

Iscriviti alla newsletter

Ricevi le nostre notizie, le nostre riflessioni creative e le novitร  dell'atelier direttamente nella tua casella di posta elettronica.

Seguici

Unisciti alla nostra community sui social network per seguire i nostri progetti quotidiani e interagire con noi.