Debug FormatDate("%hh:%ii:%ss", 3600) : ;1 heure correct
Debug FormatDate("%hh:%ii:%ss", 3600*10) : ; 10 heures correct
Debug FormatDate("%hh:%ii:%ss", 3600*20) : ; 20 heures correct
Debug FormatDate("%hh:%ii:%ss", 3600*23) : ; 23 heures correct
Debug FormatDate("%hh:%ii:%ss", 86399) : ; 23:59:59 heures correct
Debug FormatDate("%hh:%ii:%ss", 86400) : ; ???
Debug FormatDate("%hh:%ii:%ss", 3600*24) : ; ??? la derniere seconde qui coince
Formatdate
Pour moi ces résultats sont corrects ... la seconde 86400 est bien la première du deuxième jour de la période référence.
ou me trompe-je ?
Code : Tout sélectionner
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 3600) : ;1 heure correct
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 3600*10) : ; 10 heures correct
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 3600*20) : ; 20 heures correct
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 3600*23) : ; 23 heures correct
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 86399) : ; 23:59:59 heures correct
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 86400) : ; ???
Debug FormatDate("%yy-%mm-%dd %hh:%ii:%ss", 3600*24) : ; ??? la derniere seconde qui coince
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Dans ce cas y'a plus simple... tu ajoutes la différence de jours et le tour est joué...
Dri 
Code : Tout sélectionner
OpenWindow(0, 0, 0, 320, 240, #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered, "Connexion")
Global titre.s, debut_connexion.l
debut_connexion = Date(2005, 8, 28, 14, 5, 54)
Procedure ChangeTitre(rien.l)
Repeat
duree = Date() - debut_connexion
nb_jours = duree / 86400
nb_heures = Val(FormatDate("%hh", duree)) + nb_jours * 24
titre = "Connexion - " + Str(nb_heures) + FormatDate(":%ii:%ss", duree)
SetWindowTitle(0, titre)
Delay(1000)
ForEver
EndProcedure
CreateThread(@ChangeTitre(), 0)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Merci Dri, j'avoue que je n'a avais pas pensé de cette maniere, ca pourrait le faire.
j'ai egallement fait ca. ca a l'air de bien marcher sauf que la fonction FormatDate est plus rapide, je m'y attendais un peu, l'appel a cette procedure devant se faire des milliers de fois dans une boucle pour rafraichir en temps reel le temps de connexion, je me demande s'il n'y a pas moyen d'optimiser, apparement ce sont les if successifs qui ralentisssent un peu...
j'ai du utilisé une boucle de 1000 interation pour voir une difference, enlevé la ligne debug et decommenter la suivante pour tester...
;*** debut de code
Declare.s FormatSec(sec.l)
boucle.l=5
duree.l=(21*3600)+145
deb=ElapsedMilliseconds()
For i=1 To boucle
Debug FormatDate("%hh:%ii:%ss",duree)
;FormatDate("%hh:%ii:%ss",duree)
duree=duree+3600
Next i
Debug "FormatDate Effectué en : "+Str(ElapsedMilliseconds()-deb)
duree=(21*3600)+145
deb=ElapsedMilliseconds()
For i=1 To boucle
Debug FormatSec(duree)
;FormatSec(duree)
duree=duree+3600
Next i
Debug "FormatSec Effectué en : "+Str(ElapsedMilliseconds()-deb)
End
Procedure.s FormatSec(sec.l)
heure.l=sec/3600 : minute.w=(sec-(heure*3600))/60 : seconde.w=(sec-(heure*3600)-(minute*60))
hr$=Str(heure) : mn$=Str(minute) : sc$=Str(seconde)
If Len(hr$)=1 : hr$="0"+hr$ : EndIf : If Len(mn$)=1 : mn$="0"+mn$:EndIf : If Len(sc$)=1 : sc$="0"+sc$:EndIf
Format$=hr$+":"+mn$+":"+sc$
ProcedureReturn Format$
EndProcedure
;*** fin de code
j'ai egallement fait ca. ca a l'air de bien marcher sauf que la fonction FormatDate est plus rapide, je m'y attendais un peu, l'appel a cette procedure devant se faire des milliers de fois dans une boucle pour rafraichir en temps reel le temps de connexion, je me demande s'il n'y a pas moyen d'optimiser, apparement ce sont les if successifs qui ralentisssent un peu...
j'ai du utilisé une boucle de 1000 interation pour voir une difference, enlevé la ligne debug et decommenter la suivante pour tester...
;*** debut de code
Declare.s FormatSec(sec.l)
boucle.l=5
duree.l=(21*3600)+145
deb=ElapsedMilliseconds()
For i=1 To boucle
Debug FormatDate("%hh:%ii:%ss",duree)
;FormatDate("%hh:%ii:%ss",duree)
duree=duree+3600
Next i
Debug "FormatDate Effectué en : "+Str(ElapsedMilliseconds()-deb)
duree=(21*3600)+145
deb=ElapsedMilliseconds()
For i=1 To boucle
Debug FormatSec(duree)
;FormatSec(duree)
duree=duree+3600
Next i
Debug "FormatSec Effectué en : "+Str(ElapsedMilliseconds()-deb)
End
Procedure.s FormatSec(sec.l)
heure.l=sec/3600 : minute.w=(sec-(heure*3600))/60 : seconde.w=(sec-(heure*3600)-(minute*60))
hr$=Str(heure) : mn$=Str(minute) : sc$=Str(seconde)
If Len(hr$)=1 : hr$="0"+hr$ : EndIf : If Len(mn$)=1 : mn$="0"+mn$:EndIf : If Len(sc$)=1 : sc$="0"+sc$:EndIf
Format$=hr$+":"+mn$+":"+sc$
ProcedureReturn Format$
EndProcedure
;*** fin de code