Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, je viens de trouver un bug :
Quand j'instancie une date de la façon suivante :
Zend_Date::setOptions(array('format_type' => 'php')); $orig = 'c'; $date = date('Y-m-dTH:i:s').'+00:00'; $date = new Zend_Date($date, $orig);
La méthode _calculate de zend_date transforme le $part ('c') via:
$part = Zend_Locale_Format::convertPhpToIsoFormat($part);
et $part deviens : 'yyyy-MM-ddTHH:mm:ssZZZZ'
Le problème vient après quand ce $part est analysé dans Zend_Locale_Format::_parseDate via Zend_Locale_Format::getDate.
Je cite le début du code de _parseDate :
$options = array_merge(self::$_Options, self::checkOptions($options)); $test = array('h', 'H', 'm', 's', 'y', 'Y', 'M', 'd', 'D', 'E', 'S', 'l', 'B', 'I', 'X', 'r', 'U', 'G', 'w', 'e', 'a', 'A', 'Z', 'z', 'v'); $format = $options['date_format']; foreach (str_split($format) as $splitted) { if ((!in_array($splitted, $test)) and (ctype_alpha($splitted))) { require_once 'Zend/Locale/Exception.php'; throw new Zend_Locale_Exception("Unable to parse the date format string '" . $format . "' at letter '$splitted'"); } }
En gros il analyse chaque lettre de $part et si c'est une lettre de l'alphabet (ie on ignore les - _ etc...) et qu'elle n'existe pas dans le tableau $test alors ca génère une exception.
Et c'est bien le problème du format 'c' ou ISO_8601 qui vaut ....T.... --> le T ne passe pas.
Bizarrement je n'ai pas le pb si je met :
Zend_Date::setOptions(array('format_type' => 'php')); $orig = ISO_8601; $date = date('Y-m-dTH:i:s').'+00:00'; $date = new Zend_Date($date, $orig);
je suppose qu'il ne passe pas alors dans la fonction qui déconne.
Bref voila un bug, faîtes en ce que vous voulez, je n'ai pas testé de rajouter la lettre T dans le tableau test car même si ca règle le pb je ne veux pas corriger le framework tant que j'ai une solution de secours (utiliser la constante Zend_Date::ISO_8601)
Dès fois que quelqu'un me demande pourquoi je voulais utiliser 'c' (format de date php) et pas les formats de dates ISO_9601 (cf http://framework.zend.com/manual/en/zen … nedformats)
C'est parce que c'est pratique de gérer les dates avec les mêmes codes que lorsqu'on utilise date().
Enjoy
Hors ligne
Pages: 1