Page 1 sur 1

[Résolu] Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 9:09
par Micoute
Bonjour à tous,

je souhaiterais faire un petit utilitaire qui m'indiquerait dans combien de temps sera mon rendez-vous, au format "hh:ii", car j'ai un problème avec les minutes, selon qu'on va vers la minute ou qu'on l'a dépassée, par exemple dans mon exemple, s'il est 14:29, il m'indique 01:01, mais s'il est 14:35, il m'indique 01:05, j'ai pensé à addDate(), mais je n'arrête pas de modifier la formule, pourriez-vous m'aider, s'il vous plaît ?

Code : Tout sélectionner

Hrdv = 15
Mnrdv = 30
Debug Str(Hour(Date()) - Hrdv) + ":" + Str(Minute(Date()) - Mnrdv)

Merci de votre aide

Re: Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 10:05
par Backup
pas si simple ;)

Code : Tout sélectionner


;***********************************************
;Titre  :*calcul_temps_restant
;Auteur  : Dobro
;Date  :15/06/2014
;Heure  :11:04:45
;Version Purebasic :  PureBasic 5.22 LTS (Windows - x86)
;Version de l'editeur :EPB V2.54
; Libairies necessaire : Aucune 
;***********************************************


;{- Enumerations / DataSections
;{ Windows
Enumeration
	#Win
EndEnumeration
;}
;{ Gadgets
Enumeration
	#Text_Titre
	#Text_heure_actuel
	#Text_Heure_Now
	#Text_rendez_vous
	#String_Rendez_vous
	#Text_Attente
	#Text_Resultat
EndEnumeration
;}
;{ Fonts
Enumeration
	#Font_Text_Titre
	#Font_Text_Heure_Now
	#Font_Text_Resultat
EndEnumeration
;}
Define.l Event

Declare  OpenWindow_Win()
Declare.s Calcul(a$,b$)





;}

If OpenWindow(#Win, 450, 200, 363, 199, "Rendez vous", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
	TextGadget(#Text_Titre, 100, 10, 135, 45, "Rendez vous")
	TextGadget(#Text_heure_actuel, 20, 75, 45, 25, "il est :")
	TextGadget(#Text_Heure_Now, 60, 75, 105, 25, "")
	TextGadget(#Text_rendez_vous, 15, 115, 90, 25, "Rendez vous")
	StringGadget(#String_Rendez_vous, 115, 115, 45, 25, "12:00")
	TextGadget(#Text_Attente, 10, 150, 55, 25, "Attente")
	TextGadget(#Text_Resultat, 80, 145, 250, 30, "")
	; Gadget Fonts
	SetGadgetFont(#Text_Titre, LoadFont(#Font_Text_Titre, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
	SetGadgetFont(#Text_Heure_Now, LoadFont(#Font_Text_Heure_Now, "Microsoft Sans Serif", 10, #PB_Font_Bold|#PB_Font_HighQuality))
	SetGadgetFont(#Text_Resultat, LoadFont(#Font_Text_Resultat, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
EndIf



;{- Event loop
Repeat
	Time$ = FormatDate("%hh:%ii:%ss", Date())
	SetGadgetText(#Text_Heure_Now,Time$)
	rendez_vous$=GetGadgetText(#String_Rendez_vous)
	result$=Calcul(rendez_vous$,Time$)
	SetGadgetText(#Text_Resultat,result$)
	Event = WaitWindowEvent(12)
	Select Event
		; ///////////////////
		Case #PB_Event_Gadget
		Select EventGadget()
			Case #Text_Titre
			Case #Text_heure_actuel
			Case #Text_Heure_Now
			Case #Text_rendez_vous
			Case #String_Rendez_vous
			Case #Text_Attente
			Case #Text_Resultat
		EndSelect
		; ////////////////////////
		Case #PB_Event_CloseWindow
		Select EventWindow()
			Case #Win
			CloseWindow(#Win)
			Break
		EndSelect
	EndSelect
Forever


Procedure.s Calcul(a$,b$)
	; by Dobro
	R_heure=val(stringfield(a$,1,":"))
	R_Minut =val(stringfield(a$,2,":"))
	AC_heure=val(stringfield(b$,1,":"))
	AC_Minut =val(stringfield(b$,2,":"))
	
	heure_restante=R_heure-AC_heure
	minute_restante=R_Minut-AC_Minut
	if minute_restante<0
		heure_restante=heure_restante-1
		minute_restante=minute_restante+60
	Endif
	result$=str(heure_restante)+"heure et "+strf(minute_restante)+"minute(s)"
	ProcedureReturn result$
Endprocedure

;
;}
; Epb


Re: Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 10:16
par Micoute
Merci infiniment, je crois bien qu'il va falloir que je m'achète des neurones, mais je ne sais pas où on peut en trouver, de toute façon, je n'aurais pas les moyens !

Re: Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 10:49
par Ar-S
Avec un petit Timer pour éviter le clignotement des gadgets.

Code : Tout sélectionner

;***********************************************
;Titre  :*calcul_temps_restant
;Auteur  : Dobro
;Date  :15/06/2014
;Heure  :11:04:45
;Version Purebasic :  PureBasic 5.22 LTS (Windows - x86)
;Version de l'editeur :EPB V2.54
; Libairies necessaire : Aucune
;***********************************************


;{- Enumerations / DataSections
;{ Windows
Enumeration
   #Win
EndEnumeration

Enumeration
	#T ; Le timer
EndEnumeration
;}
;{ Gadgets
Enumeration
   #Text_Titre
   #Text_heure_actuel
   #Text_Heure_Now
   #Text_rendez_vous
   #String_Rendez_vous
   #Text_Attente
   #Text_Resultat
EndEnumeration
;}
;{ Fonts
Enumeration
   #Font_Text_Titre
   #Font_Text_Heure_Now
   #Font_Text_Resultat
EndEnumeration
;}
Define.l Event

Declare  OpenWindow_Win()
Declare.s Calcul(a$,b$)





;}

If OpenWindow(#Win, 450, 200, 363, 199, "Rendez vous", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
   TextGadget(#Text_Titre, 100, 10, 135, 45, "Rendez vous")
   TextGadget(#Text_heure_actuel, 20, 75, 45, 25, "il est :")
   TextGadget(#Text_Heure_Now, 60, 75, 105, 25, "")
   TextGadget(#Text_rendez_vous, 15, 115, 90, 25, "Rendez vous")
   StringGadget(#String_Rendez_vous, 115, 115, 45, 25, "13:20")
   TextGadget(#Text_Attente, 10, 150, 55, 25, "Attente")
   TextGadget(#Text_Resultat, 80, 145, 250, 30, "")
   ; Gadget Fonts
   SetGadgetFont(#Text_Titre, LoadFont(#Font_Text_Titre, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
   SetGadgetFont(#Text_Heure_Now, LoadFont(#Font_Text_Heure_Now, "Microsoft Sans Serif", 10, #PB_Font_Bold|#PB_Font_HighQuality))
   SetGadgetFont(#Text_Resultat, LoadFont(#Font_Text_Resultat, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
   
   AddWindowTimer(#Win, #T, 1000) ; Timer toutes les secondes
EndIf



;{- Event loop
Repeat
   
   rendez_vous$=GetGadgetText(#String_Rendez_vous)
   
   Event = WaitWindowEvent(12)
   Select Event
      ; ///////////////////

      ; /////// Ajout Ar-S ///////
      Case #PB_Event_Timer
      		Select EventTimer()
      			
      			Case #T
      				Time$ = FormatDate("%hh:%ii:%ss", Date())
   				SetGadgetText(#Text_Heure_Now,Time$)
   				result$=Calcul(rendez_vous$,Time$)
   				SetGadgetText(#Text_Resultat,result$)
   					
      		EndSelect		
        ; ////////// Fin Timer /////////////////////
   
      ; ////////////////////////
      Case #PB_Event_CloseWindow
      Select EventWindow()
         Case #Win
         CloseWindow(#Win)
         Break
      EndSelect
   EndSelect
ForEver


Procedure.s Calcul(a$,b$)
   ; by Dobro
   R_heure=Val(StringField(a$,1,":"))
   R_Minut =Val(StringField(a$,2,":"))
   AC_heure=Val(StringField(b$,1,":"))
   AC_Minut =Val(StringField(b$,2,":"))
   
   heure_restante=R_heure-AC_heure
   minute_restante=R_Minut-AC_Minut
   If minute_restante<0
      heure_restante=heure_restante-1
      minute_restante=minute_restante+60
   EndIf
   result$=Str(heure_restante)+" heure et "+StrF(minute_restante)+" minute(s)"
   ProcedureReturn result$
EndProcedure

;
;}
; Epb


Re: Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 11:11
par beruska
assez simple:

Code : Tout sélectionner

Hrdv=15
Mnrdv=30

; transformer l'heure du rendez-vous et l'heure actuelle en minutes
attente = (Hrdv*60 + Mnrdv) - (Hour(Date())*60 + Minute(Date()))

; et reconvertir en heures-minutes
Debug "Attente = " + Str(Int(attente/60)) + ":" + Str(attente%60)

Re: [Résolu] Calcul avec des heures et des minutes

Publié : dim. 15/juin/2014 14:37
par Micoute
Merci beaucou beruska, c'est "au poil"

Merci beaucoup aussi à Ar_s