Subtilité de Zend_Date

Je viens de tomber sur un méchant bogue dans mon application. Il est du à une subtilité dans les formats ISO proposés par Zend_Date.

Le problème se situe au niveau des années. Zend_Date propose deux formats différents : yyyy et YYYY. Le premier, celui avec les y en minuscules fournit le résultat auquel on peut s'attendre, alors que le deuxième renvoie l'année dans lequel se situe la semaine !

Si je prends l'exemple du dimanche 3 janvier 2010, YYYY-MM-dd renvoie 2009-01-03 au lieu du 2010-01-03 auquel on pourrait s'attendre, car ce jour fait partie de la semaine 53 de l'année 2009. Comme quoi il faut bien lire la doc :

For year there are two specifiers available which are often mistaken. The Y specifier for the ISO year and the y specifier for the real year. The difference is small but significant. Y calculates the ISO year, which is often used for calendar formats. See for example the 31. December 2007. The real year is 2007, but it is the first day of the first week in the week 1 of the year 2008. So, if you are using 'dd.MM.yyyy' you will get '31.December.2007' but if you use 'dd.MM.YYYY' you will get '31.December.2008'. As you see this is no bug but a expected behaviour depending on the used specifiers.

Une consolation, je ne suis pas le seul à m'y être fait prendre, puisqu'un rapport de bogue a déjà été ouvert : http://framework.zend.com/issues/browse/ZF-8277

A bon entendeur...

Portrait de Anonyme

Bonjour, Cette subtilité

Bonjour,

Cette subtilité méritait d'être mise en avant. Merci !
Faut-il en conséquence corriger le billet "Localiser un champ date"

class Wiip_Date extends Zend_Date
{
const MYSQL_DATE = 'YYYY-MM-dd';
const MYSQL_DATETIME = 'YYYY-MM-dd HH:mm:ss';
}

??

Portrait de Maxence Delannoy

Tout à fait. Je m'y attaque

Tout à fait. Je m'y attaque dès maintenant.

Portrait de Anonyme

Dans le même style pour

Portrait de Anonyme

En fait ce n'est pas la

En fait ce n'est pas la première issue sur le sujet. Elles arrivent par vague tous les ans à cette période de l'année quand les développeurs/utilisateurs voient le 1er janvier apparaître. Et justement avant-hier, c'est ce qui m'est arrivé ;)

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.