Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-09-2009 10:58:14

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

[Zend_Date] Comparer deux dates dans un format spécifique

Bonjour,

J'aimerai pouvoir comparer deux objets Zend_Date, dans un format spécifique (jour/mois par exemple) avec les méthodes de comparaison fournies par le composant (isLater, isEarlier, Compare, etc.).

Hors, dès que je convertis ma date dans un format spécifique, je convertis ma variable en quelque chose qui n'est plus un objet Zend_Date, et je me retrouve avec l'erreur :

Fatal error: Call to a member function isLater() on a non-object

Si quelqu'un a une idée ?

Merci d'avance


aka miboo

Hors ligne

 

#2 03-09-2009 12:11:17

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [Zend_Date] Comparer deux dates dans un format spécifique

Ma méthode est peut être un peu "moche" mais elle fonctionne : je convertis mes dates en timestamp avant de les comparer.
Pour cela je crée une Zend_Date comme ceci :

Code:

$datearray = array("year"=>$annee,
            "month"=>$mois,
            "day"=>$jour;
$date = new Zend_Date($datearray);

Et comme la date dont tu disposes est dans un format que tu connais tu peux en récupérer les parties pour créer ce tableau, et voila !


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#3 03-09-2009 13:00:21

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Date] Comparer deux dates dans un format spécifique

@Vincent : Quand tu convertis un Zend_Date dans un format donné, tu récupères une chaîne de caractères (string), c'est normal que tu ne puisse pas utiliser des méthodes de Zend_Date dessus.

Dans ce cas, soit ta chaîne de caractère possède "un ordre naturel" (du type yyyy-mm-dd), dans ce cas, tu peux faire une comparaison des chaîne du type

Code:

if ($date1 > $date2)

Sinon (et c'est le mieux à mon avis) il faut faire ta comparaison directement sur les Zend_Date (avant de faire ta conversion). C'est fait pour.

Pour la solution de aelyta1, a priori ça marche, mais il faut que tes dates soient entre 1970 et 2034. Si tu fais un logiciel de concessions de cimetières, tu vas avoir des problèmes... (certes, ça n'est pas le cas de tt le monde smile )

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 03-09-2009 14:16:10

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: [Zend_Date] Comparer deux dates dans un format spécifique

@Vincent : Quand tu convertis un Zend_Date dans un format donné, tu récupères une chaîne de caractères (string), c'est normal que tu ne puisse pas utiliser des méthodes de Zend_Date dessus.

C'est donc bien ce que j'avais compris smile

Le problème, c'est que quand j'initialise deux objets Zend_Date sans changer le format par défaut, j'obtiens deux dates avec Jours / Mois / Année  Heures / Minutes / Secondes.
Ce qui m'intéresse moi, c'est seulement le jours et le mois (voir éventuellement l'année), car je veux pouvoir enclencher un évènement à partir d'un changement de jour.

A priori je peux effectivement convertir mes chaines et utiliser les opérateurs > et <, même si c'est pas très optimum big_smile


aka miboo

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