Comment faire pour convertir entre des fuseaux horaires en PHP à l'aide de la classe DateTime?

Je suis en train de convertir le temps entre l'heure UTC et l'heure UTC à l'heure actuelle de la zone.

Voici ce que j'ai fait:

$schedule_date = new DateTime($triggerOn, new DateTimeZone('UTC') );
$triggerOn =  $schedule_date->format('Y-m-d H:i:s');

echo $triggerOn;

La valeur de sortie ne change pas la seule chose qui change dans le format.

la chaîne $triggerOn a été généré sur la base de America/Los_Angeles fuseau horaire

C'est ainsi que ma chaîne, comme avant et après:

BEFORE    04/01/2013 03:08 PM
AFTER     2013-04-01 15:08:00

De sorte que le problème ici est que DateTime ne convertit pas à l'UTC.

  • Ce n' $triggerOn contenir avant de vous passer à new DateTime()?
  • DateTime() constructeur s'attend à ce premier argument à la fois. Peut-être que votre $triggerOn n'est pas une bonne valeur de temps.
  • $triggerOn valeur de l'id de 04/01/2013 03:08 PM
  • Et exactement comment vous attendez-vous la chaîne "04/01/2013 03:08 PM" de contenir de l'information "America/Los_Angeles"?
  • que dois ma chaîne pour que cela fonctionne?
  • Facile: "04/01/2013 03:08 PM America/Los_Angeles". Ou alternativeley "04/01/2013 03:08 PM -0700" (je ne suis pas sûr de savoir comment bien le DateTime constructeur analyse de fuseau horaire identifiants). Mais Mike solution est probablement mieux adapté pour vous.

InformationsquelleAutor Jaylen | 2013-03-25