Conversione data gg/mm/aaaa
Author: Andrea P.Buongiorno,
ho creato una tabella nel database in cui un campo è nel formato data.
Inserisco i dati tramite il "modulo di contatto" (ho selezionato il tipo di immissione dal campo data nel formato AAAA/MM/GG per far si che corrisponda con il formato data di mysql.
estraggo i dati dal database ordinandoli per data.
Ora, però, quando non riesco a visualizzare sul sito la data nel formato itaiano GG/MM/AAAA
https://www.ismaelegatti.it/prove-.php
come posso fare per convertire il formato della data ?
Ho cercato nel web e pare che la soluzione sia l'utilizzo del comando date_format. ho provato a scriverlo così, ma non funziona:
if (isset($val[$qdata]) && $val[$qdata] != '') {
echo '<br><br><span class="outputgrandeoro">' . $val[date_format($qdata ,'d/m/Y')] . '</span>' . "\n";
}
Devi lasciare che il programma crei la tabella indicando, per il campo data, il formato che vuoi tu.
In questo modo sarà tutto coincidente senza dover convertire i formati nell'utilizzo.
Quindi cancella la tabella, falla riscrivere a website dopo aver impostato il form data come imposta la data come GG/MM/AAAA.
Author
Ciao Giorgio,
in realtà questa è stata la prima soluzione che ho adottato, poi ,però, mi sono reso conto che cosi facendo nel database le date vengono salvate in un campo testo e se le ordini , l'ordinamento segue le regole dell'ordine alfabetico. Dunque se ad esempio hai 06/05/2020 , 04/06/2021, e 07/08/2022 avrai questo risultato :
04/06/2021
06/05/2020
07/08/2022
che è il corretto ordine alfabetico.
Pertanto ho cambiato il tipo di campo nel database e di conseguenza modificato il tipo di inserimento sul modulo contatti per farli combaciare. (Infatti il sistema americano già di suo mantiene l'ordinamento corretto delle date anche nell'ordine alfabetico semplicemente perchè prima mette l'anno poi il mese e poi il giorno . Ad es se vuoi che una serie di file in una cartella mantenga un certo ordine cronologico basterà che all'inizio del nomefile tu inserisca la data nel formato americano).
Così mantengo l'ordine cronologico, ma ora ci vuole un codice che mi inverta la data in visualizzazione sul web.
Capisco...
Io ho optato per una conversione con una funzione php che richiamo quando leggo la data nel DB
$data= data_it($Data); //richiamo funzione di conversione della data letta inglese ($Data) in data italiana ($data)
function data_it($data)
{
// Creo una array dividendo la data YYYY-MM-DD sulla base del trattino
$array = explode("-", $data);
// Riorganizzo gli elementi in stile DD/MM/YYYY
$data_it = $array[2]."/".$array[1]."/".$array[0];
// Restituisco il valore della data in formato italiano
return $data_it;
}
Author
Ho fatto svariati tentativi ma sono riuscito ad utilizzare il codice che mi hai proposto
con il senno di poi probabilmente sbagliavo il nome di una variabile.
alla fine con qualche ricerca ho messo assieme questo che mi fa apparire anche il nome del mese in italiano:
if (isset($val[$qdata]) && $val[$qdata] != '') {
// Converto data in formato gg/mm/aaaa
$mesi = array(
1 => 'gennaio',
2 => 'febbraio',
3 => 'marzo',
4 => 'aprile',
5 => 'maggio',
6 => 'giugno',
7 => 'luglio',
8 => 'agosto',
9 => 'settembre',
10 => 'ottobre',
11 => 'novembre',
12 => 'dicembre'
);
$dataConvert = date_create($val[$qdata] );
$gg = date_format($dataConvert ,'d ');
$numero_mese = date_format($dataConvert ,'n');
$mm = $mesi[$numero_mese];
$aaaa = date_format($dataConvert ,' Y ');
echo '<br><br><span class="outputgrandeoro">' . $gg . $mm . $aaaa . '</span>' . "\n";
}
Grazie comunque, perchè sempre "da cosa nasce cosa" e ogni confronto mi permette di crescere nella capacità di gestire questo codice php di cui 15 giorni fa non sapevo nulla