L'HEURE EST GRAVE [Résolu]

Signaler
Messages postés
37
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
24 janvier 2006
-
Messages postés
9
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
30 mai 2005
-
salut
c'est encore moi !! (j'entend d'ici les commentaires genre : "oh NON pas celui la ,pfff......")

mon probleme cette fois ci concerne la gestion des heures :
bon j'ai dans une bdd access une table contenant deux heures (format ##:## string) , disons heure debut et heure fin ...... ce que je veut faire c'est la soustraction ou la difference entre les deux heures(heure fin-heure debut) , le resultat doit etre en minutes (ex heure debut :17:00/heure fin 18:00 ... donc le resultat est 60 )

donc je fais comme ça :
datediff("n",cdate("heure_debut"),cdate("heure_fin"))

bon tout vas bien pour le moment , MAIS (il ya toujours un "mais") .......quand l'heure fin est egale par exemple a 01:00 et que l'heure debut est egale a 15:00 ....... j'ai comme resultat -840 (1-15=-14..........-14*60=-840 min )
comment faire pour que le resultat soit 600 (10 heures) et non pas -840 ?

merci d'avance ....... et encore une chose je ne travail pas avec asp.net !!

7 réponses

Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
salut

voilà un exemple :



<%

heure_debut = Cdate("15:00")

heure_fin = Cdate("01:00")

If heure_debut > heure_fin Then

difference = datediff("n", timevalue(heure_debut),
timevalue(Cdate("23:59"))) + datediff("n", timevalue(Cdate("00:00")),
heure_fin + timevalue(Cdate("00:01")))

Else

difference = datediff("n",timevalue(heure_debut),timevalue(heure_fin))

End If



Response.Write(difference)

%>



c'est pas très optimisé (je suis sûr qu'on peut faire plus court, mais au moins ça renvoie bien 600 minutes)

en effet tu ne peux pas créer la date 24:00 (il te renvoie une erreur)
donc tu crée 23:59, tu résonne là dessus et ensuite tu rajoute 1 minute
à l'heure de fin...

bon c'est vrai ça fait un peu bidouillage.



@+++




Nurgle
C'est une grande folie que de vouloir être sage tout seul !
Messages postés
37
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
24 janvier 2006

oops j'ai commit une erreur j'utilise :

datediff("n",timevalue("heure_debut"),timevalue("heure_fin"))

(et non pas datediff("n",cdate("heure_debut"),cdate("heure_fin")) )

mais le probleme est toujours present , comment faire s'il vous plait ?
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
la solution est pas trés compliqué :-/



Tu transformes tes heures en minutes, par exemples datedeb10h10
10*60+10 610min puis si tu as datefin 2h02 = 2*60+2 = 122



si datedeb > datefin alors

datefin = datefin + 24*60 (car il y a 24h par jour :p)

fin si

result = datefin - datedeb



le seul truc "compliqué" c'est de convertir les heures en minutes, et ca je sais pas si y'a des trucs tout fait en vbs, sinon



tu peux faire un truc du genre



'datedeb = "10h10"

datedeb = datedeb.split("h")(1) *60 + datedeb.split(h)(2)



Je suis pas sur que le split existe en vbs, mais bon je te donne une
solution avec des trucs de bases, peut etre que vbs est plus riche ...
et qu'il y a d'autre facon de faire, en tout cas en .net c'est plus
simple :D



Dim dateDeb As New Date(2005, 5, 27, 20, 53, 30)

Dim result As Integer = Now.Subtract(dateDeb).Minutes


<hr>Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
224
Date d'inscription
vendredi 14 septembre 2001
Statut
Membre
Dernière intervention
14 juillet 2006

Sinon, tu peux essayer



datediff("n",timevalue("heure_debut"),timevalue("heure_fin")) MOD (24*60)
Messages postés
37
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
24 janvier 2006

le
datediff("n",timevalue("heure_debut"),timevalue("heure_fin")) MOD (24*60)

marche pas ......; mais merci quand meme bud
je vais essayer l'autre solution pour voir
Messages postés
37
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
24 janvier 2006

oui nurgle t'as encore raison , merci ça marche
et merci aussi a jesusonline (dont j'aime le pseudo) ...........sans oublier notre ami bud !!
Messages postés
9
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
30 mai 2005

en effet oui le splt exist en vb et votre proposition semble être judicieuse