Page 1 sur 1
[R] Recherche formule de calcule
Posté : dim. 03 avr. 2011 17:29
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
Re: [..] Recherche formule de calcule
Posté : dim. 03 avr. 2011 17:40
par Tlem
Votre avatar n'est pas des plus reposant pour les yeux !!!
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() 
Re: [..] Recherche formule de calcule
Posté : dim. 03 avr. 2011 18:16
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
Re: [..] Recherche formule de calcule
Posté : dim. 03 avr. 2011 18:31
par Tlem
Pourtant, il est bien connu qu'il y a 60 minutes dans une heure !!!
Enfin bon, on ne peut pas être bon dans tout ce que l'on fait ...
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.
Re: [..] Recherche formule de calcule
Posté : dim. 03 avr. 2011 18:34
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+
Re: [..] Recherche formule de calcule
Posté : dim. 03 avr. 2011 18:39
par ethneldryt
Merci a vous, c'est ce que je chercher

Re: [R] Recherche formule de calcule
Posté : sam. 23 avr. 2011 11:45
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
Re: [R] Recherche formule de calcule
Posté : sam. 23 avr. 2011 18:13
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.

Re: [R] Recherche formule de calcule
Posté : dim. 24 avr. 2011 18:16
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
Re: [R] Recherche formule de calcule
Posté : dim. 24 avr. 2011 22:46
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)