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 :

Lister heures-minutes d'une journée


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Lister heures-minutes d'une journée
    Bonjour,

    Dans un formulaire, je souhaite afficher une liste <select> contenant les heures de toute une journée à la minute (00:00, 00:01, ... , 23:58, 23:59).
    Avant de me galérer à écrire une fonction qui fait ça, je me demandais s'il n'existait pas un moyen simple de le faire avec la gestion des dates/heures PHP ?
    Je me suis penché dessus mais j'ai l'impression que tout ce que donne le manuel PHP concerne la date courante et je n'ai pas vraiment trouvé de gestion des heures/minutes

    Merci de votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Quelle drôle d'idée... J'imagine pas la tête du select...
    Pourquoi ne pas en faire plutôt deux ? Un pour les heures et l'autre pour les minutes ? Ca se présenterai déjà un peu mieux

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Bonjour insaneness,

    Au-delà de l'affichage, j'ai besoin d'un tableau avec cette même liste de String, donc dans tous les cas, je dois créer cette liste.
    Après oui, pour un meilleur confort de l'utilisateur je pourrais découper heures/minutes en 2 select mais c'est indépendant de ma problématique.

  4. #4
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    D'accord,
    Si tu as vraiment besoin de cette liste de string, je pense qu'il faut que tu la construise toi même.
    Ça reste simple avec deux foreach imbriqués

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ca ne t'est jamais venu à l'idée de faire DEUX <select> ?
    • UN pour les minutes,
    • l'AUTRE pour les heures

    ?
    Cela dit... 2 <input type="number" /> devraient suffire....

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par insaneness Voir le message
    D'accord,
    Si tu as vraiment besoin de cette liste de string, je pense qu'il faut que tu la construise toi même.
    Ça reste simple avec deux foreach imbriqués
    Oui je sais que ce n'est pas trop compliqué, mais mon code qui suit contenant déja pas mal de boucles imbriquées, je voulais m'éviter d'en rajouter.
    J'en déduis donc que ce n'est pas possible avec les fonctions de Date que propose php Tant pis.
    Merci quand même

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Ca ne t'est jamais venu à l'idée de faire DEUX <select> ?
    • UN pour les minutes,
    • l'AUTRE pour les heures

    ?
    Cela dit... 2 <input type="number" /> devraient suffire....
    Bonjour,

    Comme j'ai répondu juste avant, j'ai besoin d'un tableau qui contient toutes ces valeurs (sous forme de String) et pas 2 tableaux ; mais en effet, par la suite je spliterai heures et minutes au niveau de l'affichage.

    Sinon je viens de regarder et <input type="number"> ne fonctionne que sur des entiers et pas des dates ; et même si je concatene heures+minutes, j'aurai besoin d'augmenter à la centaine supérieur lorsque j'atteinds les 59 (...1158, 1159, 1200, 1201...).

    Merci quand même.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sebastien4444 Voir le message
    ...et même si je concatene heures+minutes....
    Tu ne sais pas que :
    • 60 minutes = 1 heure ?...
    • 1 minute = 60 secondes ?

    "concaténer" n'a rien à voir ici.

    C'est pourtant simple de TOUT passer en secondes...
    Encore faut-il que tu expliques CLAIREMENT ce que tu veux faire ... (comparaison de dates ? ...?)

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Tu ne sais pas que :
    60 minutes = 1 heure ?...
    1 minute = 60 secondes ?
    Mais vu que j'ai besoin des dates sous formes de String "heures-minutes", passer par les secondes ne me sert pas à grand chose (à part si je crée moi-même ma fonction, ce que je voulais justement éviter).

    Le besoin final est de comparer l'heure sélectionnée avec des noms de fichiers image type "heure-minutes.jpg" qui sont présent dans différents dossiers sur mon serveur.
    Pour cela il me faut ce tableau de référence avec toutes les heure-minute de la journée, que je vais parcourir et aller regarder dans mes dossiers si j'ai un fichier avec ce nom.

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tu veux deux listes, tu peux juste initialiser avec range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $heures = range(0, 23);
    $minutes = range(0, 59);
    Et pour une liste concaténée, tu peux parcourir par une double boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab = [];
    foreach ($heures as $h) {
        foreach ($minutes as $m) {
            $tab[] = $h.'-'.$m;
        }
    }
    Mais je n'aimerais pas être à la place de ton utilisateur quoi doit chercher sa valeur parmi les 1440 possibilités.

  11. #11
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    @Celira

    C'est ce que j'ai fini par faire.
    Le but de mon post à la base était de savoir si des fonctions sur les dates existaient pour ce genre de cas, qui permettrait de faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
       $tabHm = [];
       $debut = "00-00";
       $fin = "23-59";
       for($i=$debut ; $i<=$fin ; $i++){
          $tabHm[] = $i;
       }
    ?>
    Mais en incrémentant de façon horaire d'une part (changement d'heure à chaque 60mn) et en gardant le formatage que je souhaite (double zéro pour heures et minutes, séparation par "-").
    Visiblement cela n'existe pas (encore... )

  12. #12
    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,
    Citation Envoyé par sebastien4444 Voir le message
    Visiblement cela n'existe pas (encore... )
    ne dit pas de bêtise
    Depuis plus de 20 ans que le PHP existe, tu penses sincèrement que la gestion des dates/heures a été oubliée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $data = [];
    $time = (new DateTime)->setTime(0, 0, 0);
    $d = $time->format('d');
     
    while ($time->format('d') === $d) {
        $data[] = $time->format('H-i');
        $time->modify('+1 minute');
    }
    Prends l'habitude de te rencarder avant de dire n'importe quoi

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    @rawsrc : tu as déjà vu la gestion des dates en JAVA pré-java 8 ? Quand on a vu ça, on peut légitiment se poser la question pour d'autres langages

    Mais effectivement, la question d'origine portait sur les fonctions de dates mais mon 1er réflexe reste de faire ça à la main

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    en reprenant le script de Celira, pour un affichage sur 2 chiffres des heures et des minutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $heures = range(0, 23);
    $minutes = range(0, 59);
    $tab = [];
    foreach ($heures as $h) {
        foreach ($minutes as $m) {
            $tab[] = str_pad($h,2,'0',STR_PAD_LEFT).'-'.str_pad($m,2,'0',STR_PAD_LEFT);
        }
    }

Discussions similaires

  1. [XL-2013] Calcul du nombre d'heures travaillées dans une journée
    Par Avnick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2018, 20h24
  2. Réponses: 2
    Dernier message: 25/04/2017, 09h24
  3. lancement procedure-trigger à une heure donnée de la journée?
    Par bibi_forever dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/05/2007, 16h52
  4. Formatage d'une durée en heure:minute
    Par FlyByck dans le forum Langage
    Réponses: 3
    Dernier message: 15/09/2006, 22h43
  5. Formater une durée sous la forme Heure:Minute:Seconde
    Par marsupile dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/02/2004, 00h29

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