[PHP] Convertire data da formato RFC 2822 ad output personalizzato

php at davidonzo.comSi 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.

8 thoughts on “[PHP] Convertire data da formato RFC 2822 ad output personalizzato”

  1. 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)

  2. [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

  3. Hai controllato di avere le impostazioni delle lingue compilate nel php? Altrimenti setlocale si esegue senza errori, ma senza nessun effetto reale.

  4. 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

Comments are closed.