Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
Hors ligne
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 :
$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 !
Hors ligne
@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
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 )
A+, Philippe
Hors ligne
@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
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
Hors ligne
Pages: 1