Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-03-2010 12:30:17

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

[Résolu][Zend_Date][1.10] Calcule de temps restant

Bonjour,

Grâce à la doc officiel et aux différents sujet du forum j'ai réussi à débuter.
Mais arrivé à un point où je bloque.


J'ai dans une table une date d'insertion et une date (en mois) de fin de garantie.

Je sais afficher les date, mais je veux afficher combien de temps il reste avant la fin de la garantie. Une soustraction semble afficher quelque chose d'étrange.
Voici mon code.

Code:

    <?php
        $date = new Zend_Date('2009 11 12','yyyy-MM-dd');
        echo $date->get('yyyy-MM-dd'); //2009-11-12 -> OK

        $date->add($this->escape($this->item['item_warranty']),Zend_Date::MONTH); //chiffre en mois
        echo $date; //12 nov. 2012 00:00:00 -> OK (quoi que j'aimerai retier l'heure)

        $now = new Zend_Date();
        echo $now . '<br/>'; //3 mars 2010 -> OK

        $fin = $date->get('yyyy-MM-dd') - $now->get('yyyy-MM-dd');
        echo $fin; // 2 -> étrange !!
    ?>

Donc comme indiquer dans le code, la soustraction me donne '2'.

Je cherche le temps restant (année, mois, puis jours).

Voilà merci.

Dernière modification par maryooman (21-04-2010 15:51:11)

Hors ligne

 

#2 03-03-2010 13:48:49

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

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

Essaye ça, ça devrait te renvoyer la différence entre tes dates (en secondes)

Code:

$fin = $date->sub($now);

A+, Philippe


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

Hors ligne

 

#3 03-03-2010 14:31:09

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

et celà donne : 11 sept. 1972 10:33:57

je me doute qu'il est possible de faire beaucoup de choses avec, mais je ne vois pas comment sad

Hors ligne

 

#4 03-03-2010 14:56:12

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

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

Hello,

Cela vient de ta façon d'afficher mais moi je lis bien 2 ans 9 mois 11 jours et 10 h.

@+


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

Hors ligne

 

#5 03-03-2010 15:39:25

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

à part ça : echo $fin->get('yyyy-MM-dd'); qui me donne : 1972-09-11
je ne trouve pas, et même avec la doc sous le nez! : http://framework.zend.com/manual/fr/zen … rview.html

Hors ligne

 

#6 03-03-2010 16:19:06

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

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

Ce que tu récupères c'est un nombre de secondes. Le ZF considère ça comme un timestamp (c'est à dire un nombre de secondes depuis le 1er janvier 1970).

En fait quand tu soustrais 2 dates, tu n'obtiens pas une date, tu obtiens une durée, c'est normal que ça soit géré de façon un peu foireuse dans Zend_Date. (Zend_Date gère des dates et non des durées...)

Bref récupère le timestamp et divise le par 60*60*24 et tu obtiens un nombre de jours qui correspond...

A+, Philippe
PS : j'ai fait le test sur un ZF 1.8.1, là ça renvoyait directement un entier avec le nombre de secondes... ça a du changer depuis...


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

Hors ligne

 

#7 04-03-2010 16:42:31

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

en effet il renvoie un entier ...

je n'ai jamais programmé de date et je ne sais pas comment celà fonctionne.

le mystère reste entier pour moi ...

Hors ligne

 

#8 05-03-2010 08:42:58

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

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

Cet entier est un nombre de secondes qui correspond à la différence entre les 2 dates.

A+, Philippe


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

Hors ligne

 

#9 05-03-2010 10:58:36

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu][Zend_Date][1.10] Calcule de temps restant

j'ai trouvé sur le net une fonction qui me renvoi le temps qui reste et qui prends un timstamp unix.

Code:

function time_duration($seconds, $use = null, $zeros = false)
{
    // Define time periods
    $periods = array (
        'years'     => 31556926,
        'Months'    => 2629743,
        'weeks'     => 604800,
        'days'      => 86400,
        'hours'     => 3600,
        'minutes'   => 60,
        'seconds'   => 1
        );

    // Break into periods
    $seconds = (float) $seconds;
    foreach ($periods as $period => $value) {
        if ($use && strpos($use, $period[0]) === false) {
            continue;
        }
        $count = floor($seconds / $value);
        if ($count == 0 && !$zeros) {
            continue;
        }
        $segments[strtolower($period)] = $count;
        $seconds = $seconds % $value;
    }

    // Build the string
    foreach ($segments as $key => $value) {
        $segment_name = substr($key, 0, -1);
        $segment = $value . ' ' . $segment_name;
        if ($value != 1) {
            $segment .= 's';
        }
        $array[] = $segment;
    }

    $str = implode(', ', $array);
    return $str;
}

et puis je fais ça :

Code:

$date = new Zend_Date('2009 11 12','yyyy-MM-dd');
$date->add($this->escape($this->item['item_warranty']),Zend_Date::MONTH);
$now = new Zend_Date();
$fin = $date->sub($now);
$fin5 = $fin->toString("U");
echo time_duration($fin5). '<br/>';

et ça affiche :

2 years, 8 months, 1 week, 1 day, 13 hours, 32 minutes, 36 seconds


j'imagine que c'est déja implémenté dans Zend, mais j'ai pas trouvé.

Voilà


edit : comme je la trouve simpa cette fonction, pour ceux que ça intéraisse voici la source http://aidanlister.com/2004/04/making-t … -readable/

Dernière modification par maryooman (05-03-2010 11:03:19)

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