[R] Recherche formule de calcule

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ethneldryt
Status : Hors ligne

[R] Recherche formule de calcule

#1

Message par ethneldryt »

Bonjour, ce que je demande n'est pas vraiment un script, je cherche plutot une formule de calcule, pour calculer combien il y a d'heure et de minute entre deux heures de la journée.

Voici un exemple : de 12h25 a 17h00

$heure_1 = 12
$minute_1 = 25

$heure_2 = 17
$minute_2 = 00

Cela donnerai : 4h35

$heure_total = 4
$minute_total = 35

Merci de votre aide
Modifié en dernier par ethneldryt le dim. 03 avr. 2011 18:40, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche formule de calcule

#2

Message par Tlem »

Votre avatar n'est pas des plus reposant pour les yeux !!! :cry:

En ce qui concerne la formule, je dirait que cela reste quelque chose de basique, car généralement dans tout calcul horaire, on convertit l'entrée dans la plus petite unité utilisée.
En l’occurrence, vous utilisez des heures et des minutes, donc convertissez vos heures en minutes, puis additionnez le tout. Ensuite vous vous retrouverez avec deux nombres qu'il vous suffit de soustraire puis de convertir le résultat en heures/minutes.

Sinon, autre solution : _DateDiff() :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ethneldryt
Status : Hors ligne

Re: [..] Recherche formule de calcule

#3

Message par ethneldryt »

Merci et voila, avatar supprimer ^^

donc si je fais _DateDiff("n","1970/01/01 12:00:00","1970/01/01 15:20:00")
ca me retourne bien 200

Ce que je n'arrive pas a faire est de séparer les heures et les minutes en 2 var.
$heure = 3
$minute = 20

J'avais essayer de faire un petit code mais il ne fonctionne pas exactement.

Code : Tout sélectionner

$heure = $h2 - $h1_lundi
If $m1 < $m2 Then
$minute = $m2 - $m1
Else
$minute = $m1 - $m2
EndIf
 
Modifié en dernier par ethneldryt le dim. 03 avr. 2011 18:35, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche formule de calcule

#4

Message par Tlem »

Pourtant, il est bien connu qu'il y a 60 minutes dans une heure !!! :shock:

Enfin bon, on ne peut pas être bon dans tout ce que l'on fait ... :lol:

Code : Tout sélectionner

$Time = 200

$Hour = Int($Time/60)
$Min = $Time - ($Hour*60)

MsgBox(0, '', $Hour & " heure(s) et " & $Min & " minute(s)")
Si il y a besoin d'explications, merci de me le dire.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Strofe
Niveau 5
Niveau 5
Messages : 182
Enregistré le : ven. 26 sept. 2008 23:16
Localisation : Picardie, Oise, Beauvais
Status : Hors ligne

Re: [..] Recherche formule de calcule

#5

Message par Strofe »

Bonsoir

grrrrr il est rapide..

#include <Date.au3>

$delta = _DateDiff("n","1970/01/01 12:00:00","1970/01/01 15:20:00")

ConsoleWrite($delta & @CRLF & floor($delta/60) & " heure(s) et " & mod($delta,60) & " minute(s)")

A+
Y a pas de problème, y a que des solutions. Reste à les trouver.
ethneldryt
Status : Hors ligne

Re: [..] Recherche formule de calcule  

#6

Message par ethneldryt »

Merci a vous, c'est ce que je chercher :)
Nemo85
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 22 avr. 2011 19:58
Status : Hors ligne

Re: [R] Recherche formule de calcule

#7

Message par Nemo85 »

Bonjour,

je cherche à faire similaire mais avec les années, mois,jours.

je dois pouvoir encoder deux dates ex 05/04/2011 et 06/06/2012
et avoir comme résultat : 1 ans (du 05/04/2011 au 04/04/2012), 2 mois (05/04/12 au 04/06/2012), 2 jours (05/06/2012 au 06/06/2012). Le tout doit être convertis en mois soit (ans * 12 + mois + 1 (si jours différent de 0)) car tout mois commencé doit être compté.

Pour le moment j'ai trouvé ceci qui me retourne le nombre de mois entre deux dates

Code : Tout sélectionner

$CD1 = StringSplit(GUICtrlRead($DteDeb), "/")
$CD2 = StringSplit(GUICtrlRead($DteFin), "/")

$iDateCalc = _DateDiff( 'M',$CD1[3] & "/" & $CD1[2] & "/" &$CD1[1], $CD2[3] & "/" & $CD2[2] & "/" &$CD2[1])
GUICtrlSetData($Duree, $iDateCalc & " Mois")
 
mais ca compte 11 au lieu de 12 entre le 01/01/2011 et 31/12/2011...

qqn aurait-il une idée pour modifier ce code ?

Merci,

Nemo
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Recherche formule de calcule

#8

Message par Tlem »

Il y a des possibilités, mais selon certains cas, il risque d'y avoir des problèmes.

Par exemple, comment calculeriez-vous l'écart entre le 06/06/2011 et le 05/04/2012 ?

Pour les écarts d'année et de mois, _DateDiff fait très bien l'affaire, le problème est plutôt sur le nombre de jour. Tout dépend, comment vous voulez calculer ce nombre de jour. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Nemo85
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 22 avr. 2011 19:58
Status : Hors ligne

Re: [R] Recherche formule de calcule

#9

Message par Nemo85 »

Bonjour,

Merci pour la réponse.

c'est pour un calcul de durée de contrat : je considère le début au matin du 06/06/2011 et la fin au soir du 05/04/2012
soit le 1er mois commence le 06/06/2011 au matin et se termine le 05/07/2011 au soir
donc ca doit faire 10 mois pour la période que tu proposes :
1 > 06/06/2011 au 05/07/2011
2 > 06/07/2011 au 05/08/2011
3 > 06/08/2011 au 05/09/2011
4 > 06/09/2011 au 05/10/2011
5 > 06/10/2011 au 05/11/2011
6 > 06/11/2011 au 05/12/2011
7 > 06/12/2011 au 05/01/2012
8 > 06/01/2012 au 05/02/2012
9 > 06/02/2012 au 05/03/2012
10 > 06/03/2012 au 05/04/2012

par contre si la fin était le 06/04/2012 ca devrait faire 11 car le 06 au matin commence le 11e mois
et si ca se termine le 04/04/2012 ca doit aussi faire 10 car le 10e mois commence le 06

bàv
Nemo
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Recherche formule de calcule

#10

Message par Tlem »

Aux vues de vos considérations de début et de fin, ceci devrait répondre à votre question sur le calcul de mois :

Code : Tout sélectionner

#include <Date.au3>

$CD1 = StringSplit("06/06/2011", "/")
$CD2 = StringSplit("05/04/2012", "/")

$iDateCalc = _DateDiff( 'M',$CD1[3] & "/" & $CD1[2] & "/" &$CD1[1], $CD2[3] & "/" & $CD2[2] & "/" &$CD2[1] + 1)

MsgBox(64, 'Mois', "L'écart est de " & $iDateCalc & " Mois" & @TAB)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre