Bonjour,
J'ai une fonction qui me permet de convertir un temps en millisecondes, en format propre.
ça fonctionne depuis un petit moment déjà, mais ce week-end j'ai vu qu'il avait écrit 2h 1m 60s.
Normalement il aurait du dire, 2h 2m 0s, normal.
J'ai pourtant fait un test et ça me renvoit bien les bonnes valeurs à chaque fois, alors est-ce juste un loupé, ou ma fonction n'est pas parfaite

A la limite, même ne pas mettre le 0s de fin mais comment ?
► Afficher le texte
Code : Tout sélectionner
Msgbox(0, 'Fin', Time(7319000)) ; renvoi 2h 1m 59s
Msgbox(0, 'Fin', Time(7320000)) ; renvoi 2h 2m 0s
;Fonction de fin
Func Time($Fin)
Local $Formater
Local $Arrondi
Local $Seconde
Local $Minute
Local $Heure
Local $Jour
If ($Fin < 60000) Then
$Formater = Round(($Fin / 1000), 2) & " secondes"
ElseIf (($Fin >= 60000) And ($Fin < 3600000)) Then
$Arrondi = Int($Fin / 1000)
$Minute = Int($Arrondi / 60)
$Seconde = Round((($Fin / 1000) - $Minute * 60), 0)
$Formater = $Minute & " min " & $Seconde & " sec"
ElseIf ($Fin < 86400000) Then
$Arrondi = Int($Fin / 1000)
$Heure = Int($Arrondi / 3600)
$Minute = Int((($Arrondi - $Heure * 3600) / 60))
$Seconde = Round((($Fin / 1000) - $Heure * 3600 - $Minute * 60), 0)
$Formater = $Heure & "h " & $Minute & "m " & $Seconde & "s"
Else
$Arrondi = Int($Fin / 1000)
$Jour = Int($Arrondi / 86400)
$Heure = Int((($Arrondi - $Jour * 86400) / 3600))
$Minute = Int((($Arrondi - $Jour * 86400 - $Heure * 3600) / 60))
$Seconde = Round((($Fin / 1000) - $Jour * 86400 - $Heure * 3600 - $Minute * 60), 0)
$Formater = $Jour & "j " & $Heure & "h " & $Minute & "m " & $Seconde & "s"
EndIf
Return $Formater
EndFunc