In questo articolo andremo a capire come convertire il formato data del database in un altro formato.
Qualsiasi programmatore php si è scontrato almeno una volta nella sua carriera con la lettura di un campo data da un database sql a causa del formato particolare nel quale viene salvata.
Spesso, in un software, mostrare una data direttamente nel formato del database (Es.: ‘2021-01-15‘) può risultare problematico perchè noi tutti siamo abituati a leggere la data nel classico formato italiano (Es.: ‘15/01/2021‘).

Per ottenere un formato semplificato per l’utente del software che stai sviluppando ci sono due metodologie.

La prima metodologia consiste nel riformattare la data in fase di acquisizione dei dati dal database utilizzando le funzioni del linguaggio MySql.

La seconda metodologia invece è quella di convertire il campo data salvato nel database assegnandogli un altro formato tramite l’uso di alcune funzioni del linguaggio php.

Nei paragrafi successivi andremo ad illustrare con degli esempi entrambe le metodologie.

Convertire il formato data direttamente in fase di acquisizione dal database tramite MySql

Questa metodologia consente di avere un recordset contenente il formato data già pronto per essere stampato a schermo. Useremo la funzione DATE_FORMAT(data, formato) di MySql nella quale bisogna passare due parametri fondamentali:

  • Il parametro data che può essere costituito da una stringa oppure dal nome della colonna dove viene salvata la data nella tabella. In seguito i due esempi:
    1. DATE_FORMAT('2021-01-15', formato)
    2. DATE_FORMAT(nome_colonna, formato)
  • Il parametro formato che indica la struttura della stringa che uscirà dal recordset. Il formato è dato da una stringa contenente dei simboli e delle lettere che indicano la struttura della data. In seguito un esempio:
    1. DATE_FORMAT('2021-01-15', '%d/%m/%Y')

In seguito troverai una query di esempio, seguita dall’output della stessa, di una data in formato classico italiano.

Inoltre troverai una tabella contenente le indicazioni per creare il formato data più adatto alle proprie esigenze.

SELECT DATE_FORMAT(data, '%d/%m/%Y') FROM tabella_prova

Supponiamo di avere una colonna chiamata ‘data’ in una tabella chiamata ‘tabella_prova’, il risultato ottenuto sarà il seguente:

  • 18/01/2021
Specificatori Descrizione
%a Nome abbreviato del giorno(Sun..Sat)
%b Nome abbreviato del mese (Jan..Dec)
%c Mese, formato numerico (0..12)
%m Mese, formato numerico con prefisso '0' (00..12)
%D Giorno del mese con suffisso Inglese (0th, 1st, 2nd, 3rd, …)
%d Giorno del mese, formato numerico con prefisso '0' (00..31)
%e Giorno del mese, formato numerico (0..31)
%f Microsecondi (000000..999999)
%H Ora (24h) (00..23)
%h Ora (12h) (01..12)
%I Ora (12h) (01..12)
%i Minuti, formato numerico (00..59)
%j Giorno dell'anno (001..366)
%k Ora (24h) (0..23)
%l Ora (12h) (1..12)
%M Nome del mese (January..December)
%p AM o PM
%r Tempo, 12h (hh:mm:ss seguito da AM o PM)
%S Secondi (00..59)
%s Secondi (00..59)
%T Tempo, 24h (hh:mm:ss)
%U Settimana (00..53), dove la Domenica è il primo giorno del mese
%u Settimana (00..53), dove il Lunedì è il primo giorno della settimana
%V Settimana (01..53), dove la Domenica è il primo giorno della settimana
%v Week (01..53), dove il Lunedì è il primo giorno della settimana
%W Nome del giorno della settimana (Sunday..Saturday)
%w Giorno della settimana (0=Sunday..6=Saturday)
%Y Anno, formato numerico, quattro cifre
%y Anno, formato numerico, due cifre
%% Un carattere %

Convertire il formato della data tramite php dopo aver acquisito il campo dal database

Supponiamo ora di avere una variabile php ‘$data’ che contiene la stringa della data estratta dal database. Useremo due funzioni php:

  1. date($formato, $data)
  2. strtotime($data)

La funziona date() accetta due parametri in ingresso:

  1. il formato della data che si vorrà ottenere in output dalla funzione
  2. il ‘timestamp’ della data da convertire

Siccome la funzione date() ha bisogno del timestamp, dovremmo prima convertire la nostra variabile $data in timestamp e per farlo utilizzeremo la funzione php strtotime(). In seguito troverai il codice php per eseguire le operazioni necessarie al fine di convertire il formato della data estratta dal database.

<?php
    // Variabile in cui è contenuta la data estratta dal database
    $data = '2021-01-18';    
    // Converto la data in timestamp
    $timestamp_data = strtotime($data);   
    // Formato della data che voglio ottenere in uscita dalla funzione date()
    $formato = 'd/m/Y';    
    // Cambio il formato della data
    $result = date($formato, $timestamp_data); 
    // La stampa restituirà: '18/01/2021'
    echo $result; 
?>

Il tutto è però sintetizzabile con la seguente riga di codice:

<?php echo date('d/m/Y', strtotime('2021-01-18')); ?>

Chiamaci al numero 0684387568 o Contattaci online per parlare con uno specialista dei nostri piani di web design, conoscere tutti i nostri servizi e ricevere un preventivo gratuito.