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

Python Discussion :

Somme d'un grand nombre de durées [Python 2.X]


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Par défaut Somme d'un grand nombre de durées
    Bonjour,

    J'ai une liste de durées en heures sous deux formats : char ("%H:%M") et float.

    Je voudrais faire la somme de ces durées pour avoir un résultat qui peut être assez grand, par exemple : 997H02M.

    J'ai tenté le coup en utilisant des timedeltas, cependant, au fil des sommes, mes résultats deviennent faux.

    Voici un exemple de résultat que je veux éviter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a = datetime.timedelta(0, 77063) //avec 77063 en secondes
    b = 10802.0
    c = a + datetime.timedelta(seconds=b)
    //c = datetime.timedelta(1, 1465)
    Je suppose que passé une journée, le compteur repasse à 0... Comment éviter ça ?

    Bonne journée !

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je viens d'essayer et ça a l'air de marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from datetime import timedelta
     
    date1 = "2:50" # 2h 50mn
    h, m = [int(x) for x in date1.split(':')]
    d1 = timedelta(0, h*3600+m*60)
     
    date2 = 123456.0 # en secondes
    d2 = timedelta(0, date2)
     
    d = d1 + d2
     
    print(str(d))
    Ce qui affiche (et c'est juste!):

    Après, ça dépend comment tu veux présenter le résultat. Par exemple en heures et en minutes:

    - conversion du nombre de jours en heures: d.days*24

    - récup du nombre de secondes: s = d.seconds (en plus du nombre de jours!)

    - convertir ce nombre de secondes en heures et en minutes,

    - ajouter au nombre d'heures, les heures correspondant aux nbs de jours.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Par défaut
    Merci pour ta réponse !

    Je vais tester ça demain. Cependant, je vois que tu fais la somme de deux timedelta, or c'est aussi ce que j'ai fais. J'ai peur que mon problème ne soit pas résolu : une fois que j'aurais dépassé les 86400 secondes, je vais dépasser la durée d'une journée, ainsi le timedelta va mettre le compteur de seconde à 0 et ajouter 1 au nombre de jour. Non ? Ou alors je n'ai pas compris ton exemple^^ Dans tous les cas je test ça demain.

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Dans la somme entre 2 timedeltas, si la partie horaire "déborde", la partie nb de jours est incrémentée autant qu'il faut.

    A la fin, pour retrouver le nb total d'heures, Il faut donc convertir le nb de jours en heures et ajouter le résultat au nb d'heures de la journée.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Par défaut
    Biensur... idée toute bête, j'ai l'air malin ! Merci beaucoup pour cette aide

    Bonne journée !

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

Discussions similaires

  1. [Débutant] Rendre code plus efficace (grand nombre de sommes)
    Par pa243 dans le forum MATLAB
    Réponses: 10
    Dernier message: 07/07/2015, 20h40
  2. Réponses: 3
    Dernier message: 22/05/2005, 12h59
  3. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 11h53
  4. Traitement d'un grand nombre de champ
    Par k-lendos dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/03/2004, 15h13
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

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