Si tratta del formato data standard per i messaggi di testo inviati e ricevuti via web. Le specifiche sono contenute nel documento RFC2822 datato Aprile 2001. Per fare un esempio pratico degli utilizzi propri del formato in questione, sappiate che è quello standard per l’attributo <pubDate> di un file RSS in formato 2.0. Potrebbe quindi rivalarsi necessario manipolare la stringa per ottenete un formato data diverso.
Un esempio di formato RFC 2822 è il seguente
Fri, 03 Apr 2009 15:09:30 +0200
Indica la data di venerdi, 3 Aprile 2009. Potremmo volerne ottenere un output più semplice, del tipo 03/04/2009. Andremo ad usare in forma combinata le funzioni date e strtotime fornite dal core del PHP.
$data = date(‘d/m/Y’,strtotime(‘Fri, 03 Apr 2009 15:09:30 +0200’))
E questo è quanto.
Questo post mi sarebbe stato utile qualche mese fa, quando non riuscivo a far tornare le date negli RSS che generavo…
La prossima volta chiedi. Scrivo le cose quando mi si pone il problema 🙂
Beh! Google lo hanno inventato apposta per non dover rompere le scatole agli altri quando hai un problema.
Giusto? 🙂
ciao se la data passata in strtotime() non è in inglese ma in italiano come si fa?
Ho provato ad usare anche setlocale() con strftime anziché date() ma non me la riconosce.(l'impostazione dell'italiano con setlocale() l'ha presa correttamente)
Passami la data che faccio qualche prova.
[code]
$data_en = strftime('%d/%m/%Y',strtotime('03 April 2009 15:09:30'));
echo "eng: ".$data_en;
$data_it = strftime('%d/%m/%Y',strtotime('03 Aprile 2009 15:09:30'));
echo "<br>ita: ".$data_it;
[/code]
risultato:
eng: 03/04/2009
ita: 01/01/1970
Hai controllato di avere le impostazioni delle lingue compilate nel php? Altrimenti setlocale si esegue senza errori, ma senza nessun effetto reale.
mi sembra che il setlocale sia OK perchè stampa aprile nel primo caso,cioè riconosce april e traduce aprile,mentre se l'input è aprile non lo riconosce 🙁
[code]
setlocale(LC_ALL, 'ita_ITA');
$data_en = strftime('%d/%B/%Y',strtotime('03 April 2009 15:09:30'));
echo "eng: ".$data_en;
$data_it = strftime('%d/%B/%Y',strtotime('03 Aprile 2009 15:09:30'));
echo "<br>ita: ".$data_it;
[/code]
risultato:
eng: 03/aprile/2009
ita: 01/gennaio/1970