101 votes

php convertir date / heure en UTC

J'ai besoin d'un moyen simple de convertir un horodatage en UTC (quel que soit le fuseau horaire du serveur) HOPEFULLY sans utiliser aucune bibliothèque.

119voto

poke Points 64398

Utilisez strtotime pour générer un horodatage à partir de la chaîne donnée (interprétée comme heure locale) et utilisez gmdate pour l’obtenir en tant que date et heure UTC formatée.

Exemple

Comme demandé, voici un exemple simple:

 echo gmdate('d.m.Y H:i', strtotime('2012-06-28 23:55'));
 

35voto

Phill Pafford Points 32046

Essayez les méthodes getTimezone et setTimezone , voir l'exemple.

(Mais cela utilise une classe)

METTRE À JOUR:

Sans cours, vous pouvez essayer quelque chose comme ceci:

 $the_date = strtotime("2010-01-19 00:00:00");
echo(date_default_timezone_get() . "<br />");
echo(date("Y-d-mTG:i:sz",$the_date) . "<br />");
echo(date_default_timezone_set("UTC") . "<br />");
echo(date("Y-d-mTG:i:sz", $the_date) . "<br />");
 

REMARQUE: vous devrez peut-être également redéfinir le fuseau horaire sur l'original.

25voto

Attilio Points 818

Faire de cette façon:

 gmdate('Y-m-d H:i:s', $dateToFormat)
 

ou simplement

 gmdate('Y-m-d H:i:s')
 

pour obtenir "MAINTENANT" en UTC.

Vérifiez la référence:

http://www.php.net/manual/en/function.gmdate.php

14voto

Johan Points 6127

Si vous avez une date dans ce format AAAA-MM-HH jj: mm: ss, vous pouvez tromper php en ajoutant un UTC à la fin de votre "chaîne de date / heure" et utiliser strtotime pour le convertir.

 date_default_timezone_set('Europe/Stockholm');
print date('Y-m-d H:i:s',strtotime("2009-01-01 12:00"." UTC"))."\n";
print date('Y-m-d H:i:s',strtotime("2009-06-01 12:00"." UTC"))."\n";
 

Cela imprimera ceci:

 2009-01-01 13:00:00
2009-06-01 14:00:00
 

Et comme vous pouvez le constater, il règle également le problème de l'heure d'été.

Un peu étrange moyen de le résoudre .... :)

4voto

Christos Pontikis Points 121

Comme strtotime nécessite un format d’entrée spécifique, DateTime :: createFromFormat peut être utilisé ( php 5.3+ est requis )

 // set timezone to user timezone
date_default_timezone_set($str_user_timezone);

// create date object using any given format
$date = DateTime::createFromFormat($str_user_dateformat, $str_user_datetime);

// convert given datetime to safe format for strtotime
$str_user_datetime = $date->format('Y-m-d H:i:s');

// convert to UTC
$str_UTC_datetime = gmdate($str_server_dateformat, strtotime($str_user_datetime));

// return timezone to server default
date_default_timezone_set($str_server_timezone);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X