Somme d'heures..

  1. 2 weeks ago

    Bonjour,
    Comment ecrire 35:00 (35h..)
    Et en faire des additions
    35:30 + 35:45 = 71:15 (par exemple..)

    Je pense qu'il y a forcement une solution plus simple que celle que j'utilise..
    (Je separe mes heures uniquement puis mes minutes le tout en "cdbl"
    Puis j'affiche en text mon resultat en passant par des formule pour convertir mon resultat en centieme en heure.. Une galere, quoi..

    Merci d'avance bcp!!

    Pourquoi ne pas convertir en minutes, additionner, puis convertir à nouveau en heures en divisant par soixante, et le reste sera les minutes.

  2. Emile S

    May 10 Europe (France, Strasbourg)

    J'aurais transformé les heures enminutes, ajouté toutes les minutes
    divisé les minutes par 60 (MOD et / je crois) et obtenu le total en jeures et en minutes.

  3. Michel B

    May 10 Pre-Release Testers, Xojo Pro Answer

    Pourquoi ne pas convertir en minutes, additionner, puis convertir à nouveau en heures en divisant par soixante, et le reste sera les minutes.

  4. Emile S

    May 10 Europe (France, Strasbourg)

    Oh ! Quelle bonne idée…

  5. Jean-Yves P

    May 10 Pre-Release Testers, Xojo Pro Europe (France, Besancon)

    ou transformer en heures décimales, ce qui revient au même .
    c'est plus simple à appréhender en minutes finalement.

  6. Michel B

    May 10 Pre-Release Testers, Xojo Pro

    On peut faire une méthode encore plus générale en descendant à la seconde. Mais en l'occurrence, vu le chiffre de 35 heures, je soupçonne que cela sera appliqué à des calculs de paie, où les secondes ne sont pas utilisées.

  7. Jean-Yves P

    May 11 Pre-Release Testers, Xojo Pro Europe (France, Besancon)

    oui et dans ce cas les heures decimales sont une bonne idée, car le calcul après se fait sur ces heures justement ...

  8. Eric d

    May 11 Pre-Release Testers The French countryside
    Edited 2 weeks ago by Eric d

    Si c'est quelque chose qui n'arrive qu'à un seul endroit dans le code, la solution de convertir d'abord en minutes, d'additionner puis de reconvertir en Heure et Minutes avec une division entière ' \' et Mod() reste la meilleure solution dans la mesure où cela permet de s'affranchir des problèmes de précision des nombres décimaux surtout quand on aborde des centaines de sommes consécutives.

    Mais si ce genre de calcul est plutôt fréquent dans le code, à mon avis il est plus rentable de créer une classe pour gérer ce calcul en un seul et unique endroit du code, avec un constructeur qui prend une chaîne du genre "35:30" comme paramètre et qui gère la validation par la levée d'une exception ainsi que la transformation en minutes dans une propriété .Minutes As Integer, une méthode .toText As Text pour pouvoir récrire cette valeur à l'écran ou vers l'imprimante. Ensuite, une méthode .Operator_Add() pour gérer les additions.

    Au premier abord cela peut paraître compliqué, mais cette approche fait gagner un temps fou une fois mise en place. De plus, si on a besoin des gérer des multiplications, des soustractions, des divisions ou même des comparaisons, on a juste à rajouter des méthodes de surcharge d'opérateurs .Operator_xxx() .

  9. Jean-Yves P

    May 11 Pre-Release Testers, Xojo Pro Europe (France, Besancon)

    ca me parait inutilement compliqué...
    faire une methode qui converti les heures en heures decimales 3h30min devient 3,5 heure (float)
    après tous les calculs se font en float
    et une autre methode pour le sens inverse.
    quoi que si c'est pour une paye, on ne fait pas le calcul en sens inverse.

  10. Michel B

    May 11 Pre-Release Testers, Xojo Pro

    Indiscutablement, au moins une méthode, pour éviter les doublons de code, semble nécessaire.

    Les heures décimales, je vois bien comment aller de base 12 à base 10, mais dans l'autre sens avec un single, je crains les effets de bord. Peut être inutilement, mais j'aime bien en rester à Integer pour heures et minutes.

    Si effectivement les heures décimales sont utilisées pour les calculs de paie, j'aurais tendance à faire la conversion au dernier moment.

  11. Eric d

    May 11 Pre-Release Testers The French countryside
    Edited 2 weeks ago by Eric d

    @Jean-YvesPochez ca me parait inutilement compliqué...
    faire une methode qui converti les heures en heures decimales 3h30min devient 3,5 heure (float)
    après tous les calculs se font en float
    et une autre methode pour le sens inverse.
    quoi que si c'est pour une paye, on ne fait pas le calcul en sens inverse.

    C'est effectivement compliqué s'il s'agit juste d'additionner des temps de travail. Toutefois, je resterais dans le domaine des Integers comme le conseille Michel ci-dessus.

    Ayant déjà été confronté à ce genre de problème justement pour traiter des additions de temps de travail journalier, j'ai utilisé une classe afin de simplifier la gestion des heures supplémentaires qui étaient détectées, et séparées dans le constructeur de la classe et additionnées parallèlement dans la méthode surchargeant l'opérateur d'addition. D'autre part, le constructeur détectait les erreurs de saisie manuelle du genre "08h70" ou encore "18H20" qui est manifestement erroné pour une journée de travail.

  12. Louis D

    May 11 Pre-Release Testers, Xojo Pro Montreal, QC, Canada

    J'ai déjà travaillé 33 heures de suite lors de la mise en service d'un système. Si votre programme m'avait interdit de saisir mes heures, cela aurait été l'insulte s'ajoutant à l'injure. Je vous confirme qu'après 33 heures, je suis d'assez mauvais poil et ma réaction aurait été assez vive! Il faut être très prudent avec les validations automatiques.

  13. Eric d

    May 11 Pre-Release Testers The French countryside
    Edited 2 weeks ago by Eric d

    @LouisDesjardins J'ai déjà travaillé 33 heures de suite lors de la mise en service d'un système. Si votre programme m'avait interdit de saisir mes heures, cela aurait été l'insulte s'ajoutant à l'injure. Je vous confirme qu'après 33 heures, je suis d'assez mauvais poil et ma réaction aurait été assez vive! Il faut être très prudent avec les validations automatiques.

    Je ne sais pas comment je dois prendre cette réaction... Il y manque peut-être un smiley ? :)

    Pour information, je me conformais à un cahier des charges. Et le genre d'activité géré par cette appli ne pouvait pas engendrer plus de 12H00 de travail d'affilé.
    Pour ce qui est des longues journées de travail, dans une vie antérieure, il m'est arrivé de déclarer 36 cachets journaliers pour une période d'un mois à un organisme gérant les congés payés des métiers du spectacles. ;)

    Mais cette histoire est hors-sujet.

  14. Louis D

    May 11 Pre-Release Testers, Xojo Pro Montreal, QC, Canada

    oui, il manquait un smiley! pas de souci, c'était avec un sourire!

  15. last week

    Jean L

    May 18 Pre-Release Testers, Xojo Pro

    A l'ancienne tu peux utiliser le code suivant pour ajouter ne heure
    dim d1 as new Date
    dim D2 as new date
    d2.Second = d1.Second + 3600

    Si tu utilises derniere version xojo il te faut utiliser la class dateInterval
    va voir: http://developer.xojo.com/xojo-core-dateinterval

  16. Michel B

    May 18 Pre-Release Testers, Xojo Pro
    Edited last week by Michel B

    Ou plus simplement

    d.hour = d.hour+1

or Sign Up to reply!