2011-10-28 13 views
5

Ho visto alcune domande su questo, ma non è una risposta chiara ... strtotime() utilizzerà il set di fuso orario predefinito per PHP quando si converte la stringa in un timestamp Unix.forza php strtotime da usare UTC

Tuttavia, voglio convertire una stringa unix timestamp in UTC. Dato che non ci sono parametri per farlo, come può essere fatto?

La stringa che sto cercando di convertire è: 2011-10-27T20: 23: 39, che è già in UTC. Voglio rappresentarlo come un timestamp unix anche in UTC.

Grazie

+0

Considerare anche l'uso di 'new DateTimeZone ('UTC');', consultare http://stackoverflow.com/a/34651091/1066234 –

risposta

5

impostare il fuso orario di default del sistema prima di effettuare la chiamata strtotime:

date_default_timezone_set('UTC'); 
echo strtotime('2011-10-27T20:23:39')."\n"; 

// Proof: 
print_r(getdate(strtotime('2011-10-27T20:23:39'))); 

// IMPORTANT: It's possible that you will want to 
// restore the previous system timezone value here. 
// It would need to have been saved with 
// date_default_timezone_get(). 

See it in action.

+0

Tuttavia, ciò causerebbe problemi con il resto dello script? Immagino che potrei riportarlo in seguito? – Brian

+0

@Brian: Potrebbe causare problemi, sì. Ma finché lo rimandi non ci saranno problemi. – Jon

10

mi rendo conto questa domanda è molto vecchio, ma ho trovato un'altra opzione che può essere utile. Invece di impostare e poi tornando il fuso orario di PHP, è possibile specificare il fuso orario come parte della stringa si passa alla strtotime in questo modo:

echo date_default_timezone_get(); 
output: America/Chicago 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39')); 
output: 2011-10-28 01:23:39 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago')); 
output: 2011-10-28 01:23:39 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC')); 
output 2011-10-27 20:23:39 

Nota: Io sono su PHP 5.5.9, ma questo dovrebbe funzionare in qualsiasi versione php.

+1

Questa risposta è molto più preferibile alla risposta accettata. +1 – Druckles

+2

Questo è più facile ma devi fare attenzione all'input dell'utente. Se solo l'invio in ciò che un utente ha digitato non si sa mai se hanno intenzione di includere il fuso orario o qualcosa che rovinare la corda in su. –