2011-10-25 4 views
3

J'ai des problèmes lors de la conversion d'un horodatage, qui est un datetime UTC, en un autre fuseau horaire utilisant Zend Framework. Mon fuseau horaire par défaut est Europe/ParisPHP: convertir le fuseau horaire d'un horodatage

$timestamp = 1319530421; 
$date = new Zend_Date(); 
$date->setTimezone('UTC'); 
$date->set($timestamp, Zend_Date::TIMESTAMP); 
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />'; 
$date->setTimezone('Europe/Paris'); 
echo $date->get(Zend_Date::W3C).' - '.$date->getTimezone().'<br />'; 

qui fait écho à

2011-10-25T08:13:41+00:00 - UTC 
2011-10-25T10:13:41+02:00 - Europe/Paris 

mais il est faux parce que l'horodatage est

2011-10-25T10:13:41+00:00 - UTC 

Qu'est-ce que je fais mal? Merci

+2

Pouvez-vous clarifier la question s'il vous plaît. Je ne comprends pas ce que vous pensez est faux sur la sortie. En outre, existe-t-il une raison particulière pour utiliser l'API Zend_Date lente et encombrante. Quelles fonctionnalités utilisez-vous que l'API DateTime native n'offre pas? – Gordon

+0

Je travaille avec les horodatages. Ceux qui sont stockés dans la base de données sont en UTC. Je veux juste les convertir en fuseau horaire de l'utilisateur. De l'autre côté, je n'ai pas besoin de le faire avec Zend_Date. J'utilise simplement le framework zend. Une solution PHP est valide pour moi. – jerkan

+0

mais quel est le problème avec les dates? 1319530421 est vraiment 2011-10-25T08: 13: 41 GMT/UTC. Voir http://codepad.viper-7.com/HxJgeJ ou essayez avec http://www.epochconverter.com/ – Gordon

Répondre

0

Vous avez tort sur l'horodatage dans votre exemple. Sa date est:

date_default_timezone_set('UTC'); 

$timestamp = 1319530421; 

echo date('c e', $timestamp); # 2011-10-25T08:13:41+00:00 UTC 

Donc, tout est correct avec votre exemple, juste votre attente ne l'est pas.

Questions connexes