IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compte à rebours horaire (9h50, 9h40...)


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 196
    Points : 112
    Points
    112
    Par défaut Compte à rebours horaire (9h50, 9h40...)
    Bonjour,

    J'ai une série d'image (carte radar météo) prises aux 10 minutes dont le nom est le "timestamp" en GMT.

    Ex: 201205180900.gif (pour 2012-05-18 à 09:00)

    J'aimerais faire un compte à rebours aux 10 minutes (10:00, 09:50, 9h40...)

    J'ai bidouillé un petit bout de code qui "fonctionne", mais quand je change
    de jour ( à 00:00), je me retrouve avec un 9999!

    Svp, gardez vos tomate pour la bouffe!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $temps = gmdate('YmdHi');   // Date ccomplete en GMT
    $temps_arr = floor($temps / 10) * 10;  // arrondi au 10 minutes
    for ($inc = 0; $inc < 20; $inc++) {
       $temps_modif = $temps_arr - 10;  //  On retranche un autre 10 minutes
       echo '<img src="images/'.$temps_modif.'.gif" alt="" title="" />';
       if (fmod($temps_modif,100) == 0) {   // Si heure pile (ex. 10:00)
          $temps_arr = $temps_modif -40;    // Soustrait 40 (pour ne pas avoir (09:90, 09:80...)
       }
       else
          $temps_arr = $temps_modif;
    }
    À l'évidence, je ne sais pas travailler avec les dates!

    Quelqu'un aurait l'amabilité de me débourber??

    Amicalement,
    Jacques

  2. #2
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    salut,


    regarde du coté de la classe datetime et plus particulièrement de la méthode add ça devrait t'aider

    ($dateTime->add('P10M'); par exemple pour l'ajout, reste a faire l'initialisation et la boucle

    @+

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut Jacques,

    Allez, je m'en vais te "débourber"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    // temps courant
    $now = new DateTime('now', new DateTimeZone('UTC'));
    // on aligne l'heure sur un multiple de 10 minutes
    $floor = floor($now->getTimestamp() / (10 * 60)) * 10 * 60;
    // date et heure de départ normalisée
    $start = new DateTime();
    $start->setTimestamp($floor);
     
    // interval entre chaque carte : 10 minutes
    $interval = new DateInterval('PT10M');
     
    // on affiche un maximum de 30 liens soit les 5 dernières heures
    $i = 30;
    while($i--) {
        $start = $start->sub($interval);
        $file  = 'images/'.$start->format('YmdHi').'.gif';
        echo $i, ' - ', $file, '<br />';
    }
     
    ?>
    @plus la grenouille

  4. #4
    Membre régulier
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 196
    Points : 112
    Points
    112
    Par défaut
    Bonsoir la grenouille,

    J'ai essayé ton code ... et je recois un erreur!

    <b>Fatal error</b>: Call to undefined method DateTime::getTimestamp()

    Est-ce que je dois faire un include ou quelque chose de la sorte?

    Je bidouille des choses en php, mais mes connaisances sont plutôt limitées!
    (Mon hébergeur utilise php 5.2.17)

    Amicalament,
    Jacques

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Ah bah ça avec un hébergeur qui te file du 5.2.17, on ne peut pas faire des miracles non plus.
    A défaut de pouvoir utiliser les fonctionnalités du PHP 5.3, on va utiliser le temps UNIX pour s'en sortir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // on aligne l'heure sur un multiple de 10 minutes : temps GMT
    $start = floor(gmmktime() / (10 * 60)) * 10 * 60;
     
    // on affiche un maximum de 30 liens soit les 5 dernières heures
    $i = 30;
    while($i--) {
        $file   = 'images/'.date('YmdHi', $start).'.gif';
        $start -= 600;             // on remonte le temps de 600s soit 10 minutes
        echo $i, ' - ', $file, '<br />';
    }
    Cette fois-ci ça devrait rouler

  6. #6
    Membre régulier
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 196
    Points : 112
    Points
    112
    Par défaut
    Bonjour mon ami,

    Ca y est... ça marche!!!

    Mais les heures sont locales

    Est-ce que je dois faire la gestion du serveur?
    (Si Unix.... Si Apache)... ou inclure une variable "décalage"?

    Jacques

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Avant le $start, mets donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_default_timezone_set('UTC');
    et réessaye pour voir.

  8. #8
    Membre régulier
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 196
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    Oh la la cette heure là!!!

    Enfin je vais pouvoir faire une page d'imagerie radar unique!!
    Le seule script que je connais pour le Canada demande accès à allow_url_fopen

    Merci de ta patience! Tu es Super

    Jacques
    Ps. Si tu es curieux du résultat: http://www.weatherbyyou.com/demo/Wea..._v2/listes.php

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compte à rebours horaire
    Par sandra_leb dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 03/03/2010, 20h35
  2. Compte à rebours
    Par Anduriel dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/12/2005, 21h12
  3. compte à rebours
    Par Datord dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/11/2005, 22h22
  4. compte à rebours
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 27/10/2005, 16h20
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 21h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo