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:
DATE_FORMAT('2021-01-15', formato)
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:
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:
La funziona date() accetta due parametri in ingresso:
- il formato della data che si vorrà ottenere in output dalla funzione
- 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')); ?>