Soumis par Maxence Delannoy le lun, 20/07/2009 - 16:09
Aujourd'hui, j'ai eu besoin de convertir une date exprimée dans le fuseau horaire PST/PDT (Pacific Summer Time/Pacific Daylight Time) au fuseau horaire de Paris. Avec Zend_Date, il suffit de définir le fuseau horaire source avant de régler la date, puis de repasser dans le fuseau horaire désiré :
$date = new Zend_Date(); // On règle le fuseau horaire à America/Los_Angeles car PST/PDT n'est pas un format standard $date->setTimezone('America/Los_Angeles'); // On définit une constante pour le format DATETIME de MySQL define('MYSQL_DATETIME', 'yyyy-MM-dd HH:mm:ss'); // On charge la date au format DATETIME de MySQL dans l'objet Zend_Date $date->set('2009-07-20 00:00:00', MYSQL_DATETIME); // On repasse la date dans le fuseau horaire par défaut // défini dans php.ini (Europe/Paris dans mon cas) $date->setTimezone(null); // Affiche Europe/Paris echo $date->getTimezone() . "\n"; // Affiche 2009-07-20 09:00:00 // 7h de décalage/UTC pour PST/PDT + 2h de décalage/UTC pour Europe/Paris, // on obtient bien 9h echo $date->toString(MYSQL_DATETIME) . "\n";



Bonjour, merci pour cet
Bonjour,
merci pour cet extrait de code.
2 petites remarques en passant :
(1) 'YYYY-MM-dd HH:mm:ss' => la casse a son importance, par exemple 'yyyy-MM-dd hh:mm:ss' rend les heures de 0 à 12.
(2) Dans une classe, on préférera définir MYSQL_DATETIME en tant que constante de classe et pas en tant que define.
@+
Poster un nouveau commentaire