Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-04-2010 18:12:31

stabiloo
Nouveau membre
Date d'inscription: 21-04-2010
Messages: 3

problème Zend_Date avec années bissextiles

Bonjour,

je me heurte actuellement à un problème curieux concernant le composant Zend_Date.

Après m'être tourné vers ZF Issue Tracker (cf. http://framework.zend.com/issues/browse/ZF-9711), où l'on m'a répondu que ce bug n'est pas reproductible, je me tourne vers la communauté pour que quelqu'un puisse me dire si:
* j'hallucine complètement
* je suis le seul à rencontrer ce problème => je joins un petit code d'exemple complet permettant de reproduire très simplement le problème.


Le problème concerne uniquement les années bissextiles antérieures à 1900, et plus particulièrement pour les jours des mois de février (comme par hasard ...).

Le problème est le suivant:
1. je crée un objet Zend_Date pour la date du 25/02/1824 (année bissextile donc).

Code:

$strInitialDate='25/02/1824';
$myDate = new Zend_Date($strInitialDate, 'dd/MM/yyyy');

2. L'objet Zend_Date créé correspond à la date du 26/02/1824. Il y a un décalage de 1 jour !!!!

Code:

echo $myDate->toString('yyyy/MM/dd');

produit:

1824/02/26

Je rencontre ce problème avec la version 1.10.1 (mais avec la dernière 1.10.3, c'est la même chose).
Les configurations complètes de mes environnements de dev et de prod sont données dans le post sur ZF Issue Tracker.

Si quelqu'un pouvait avoir la gentillesse de tester ce code, et me dire s'il observe le même résultat.
Merci
Philippe


Voici le code complet:

Code:

<?php
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/'));

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/library'),
    get_include_path())));


require_once 'Zend/Date.php';
date_default_timezone_set('Europe/Paris');

//$datearray = array('year' => 1824, 'month' => 2, 'day' => 25);
//$myDate = new Zend_Date($datearray);

$strInitialDate='25/02/1824';
$myDate = new Zend_Date($strInitialDate, 'dd/MM/yyyy');
$strFormattedDate= $myDate->toString('yyyy/MM/dd');

echo "Initial date ('dd/MM/yyyy'): ".$strInitialDate;
echo "\n";
echo "Formatted date ('yyyy/MM/dd'): ".$strFormattedDate;
echo "\n";

?>

Et le résultat est:

Code:

Initial date ('dd/MM/yyyy'): 25/02/1824
Formatted date ('yyyy/MM/dd'): 1824/02/26

Hors ligne

 

#2 21-04-2010 18:52:05

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: problème Zend_Date avec années bissextiles

J'obtiens le même résultat !

Hors ligne

 

#3 21-04-2010 18:59:48

stabiloo
Nouveau membre
Date d'inscription: 21-04-2010
Messages: 3

Re: problème Zend_Date avec années bissextiles

Même si ça ne résoud pas mon problème, au moins, je me sens mois seul !!! ;-)

Merci d'avoir pris la peine de tester.

Euh ... mais j'ai un doute tout à coup:
-> tu obtiens le même résultat que moi => donc il y a bien un bug
ou alors c'est
-> ton programme affiche le même résultat, c'est-à-dire deux fois la date du 25/02/1824

A priori, tu obtiens le même résultat (buggué) que moi.

Merci

Hors ligne

 

#4 21-04-2010 21:08:01

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: problème Zend_Date avec années bissextiles

Hello,

J'obtenais ton résultat en 1.10.1 mais pas dans le trunk. Je ne sais pas dire pour la 1.10.3.
Thomas a récemment corrigé un bug, je pense que c'est celui-là dont il s'agit : http://framework.zend.com/issues/browse … issuepanel

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 22-04-2010 09:43:16

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: problème Zend_Date avec années bissextiles

Désolé que mon message soit a double sens. Ce que je voulais dire c'était que j'avais le même résultat que toi donc le bug.
De plus j'ai essayé ce matin avec la dernière version (1.10.3) et j'ai aussi le bug (avant j'essayais avec la version 1.10.1).
As-tu essayé directement en PHP dans utiliser Zend ?

Hors ligne

 

#6 22-04-2010 11:11:25

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: problème Zend_Date avec années bissextiles

@Ithier : le problème est corrigé dans le trunk mais pas en 1.10.3


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 22-04-2010 12:33:06

stabiloo
Nouveau membre
Date d'inscription: 21-04-2010
Messages: 3

Re: problème Zend_Date avec années bissextiles

@mikaelkael
Effectivement, le patch 21753  liée à l'issue [ZF-9349] corrige bien mon problème: merci beaucoup.

@Ithier: lors du dev, je n'utilisais pas l'objet Zend_Date: je formatais mes dates en utilisant les fonctions PHP.
Mais en passant en environnement de prod, j'ai découvert que l'environnement 5.1.X n'était pas compilé avec l'option me permettant d'utiliser ces fonctions (CFLAGS=-DEXPERIMENTAL_DATE_SUPPORT=1 je crois ...)
=> en attendant l'upgrade de cet environnement (ce qui est fait désormais), j'ai utilisé Zend_Date

Merci à tous pour votre aide précieuse

Hors ligne

 

#8 25-05-2010 22:36:55

martinsupiot
Membre
Lieu: Nantes
Date d'inscription: 20-03-2007
Messages: 52
Site web

Re: problème Zend_Date avec années bissextiles

J'ai un problème dans le même genre...

Code:

            $date = new Zend_Date('2011-01-02', 'YYYY-MM-dd');
            echo  $date->get('YYYY-MM-dd'); // 2010-01-02

En interne le timestamp est bon, c'est donc la reconversion en sortie qui doit déconner.

Le bug n'existe pas pour toutes les dates par contre, mais je n'ai pas isolé le cas plus précisément.

Je suis en 1.10.4

Hors ligne

 

#9 25-05-2010 23:10:40

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: problème Zend_Date avec années bissextiles

Non c'est yyyy en minuscule sinon c'est l'ISO-8601. Car le 2 janvier 2011 appartient à la semaine 52 de l'année 2010.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#10 26-05-2010 10:02:48

martinsupiot
Membre
Lieu: Nantes
Date d'inscription: 20-03-2007
Messages: 52
Site web

Re: problème Zend_Date avec années bissextiles

En fait je me suis basé sur le tutoriel de Maxence http://wiip.fr/content/zend-framework-l … champ-date et depuis mon implémentation, il a ajouté un détail qui change tout :
Mise à jour du 4/12/09 : remplacé Y par y dans les codes de format de la date (http://wiip.fr/content/subtilit-de-zend-date).

Du coup tout marche nickel.

Merci

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages