2013-06-30 11 views
28

ho bisogno di visualizzare e gestire UTC data nel seguente formato:Come formattare una data UTC per utilizzare il designatore Z (Zulu) della zona in PHP?

2013-06-28T22: 15: 00Z

Poiché questo formato è parte dello standard ISO8601 non ho problemi a creare DateTime oggetti da stringhe come quella sopra. Tuttavia non riesco a trovare un modo pulito (ovvero senza manipolazioni di stringa come substr e replace, ecc.) Per presentare il mio oggetto DateTime nel formato desiderato. Ho provato a modificare il server e le impostazioni di datetime di php, con scarso successo. Ottengo sempre:

$date->format(DateTime::ISO8601); // gives 2013-06-28T22:15:00+00:00 

C'è qualche formato di data o impostazione di configurazione che mi darà la stringa desiderata? O dovrò aggiungere manualmente la "Z" a un formato orario personalizzato?

+1

+1 per l'utilizzo di DateTime in primo luogo. – Herbert

risposta

48

No, non esiste una costante speciale per il formato desiderato. Vorrei usare:

$date->format('Y-m-d\TH:i:s\Z'); 

ma si dovrà fare in modo che i tempi si sta utilizzando sono davvero UTC per evitare errori di interpretazione nell'applicazione.

+1

Abbastanza giusto. Grazie! – salla

+0

Questa è un'ottima risposta, ma consiglieresti di utilizzare 'setTimeZone' per adattarsi a UTC? O c'è un modo più pulito? –

+1

@MattJohnson Dipende. Se i timestamp devono essere interpretati come UTC (ma senza contenere letteralmente l'offset) e il tuo server ha un fuso orario diverso da quello di UTC, 'setTimeZone()' cambierebbe il valore letterale del timestring. Questo potrebbe non essere quello che vuoi. D'altra parte, se i timestamp esistenti devono essere interpretati nel tempo del server e tu * vuoi * trasformarli in ora UTC, allora è necessario "setTimeZone()". – hek2mgl

Problemi correlati