Page 1 sur 1
[R] Convertir millisecondes en temps
Posté : mar. 02 sept. 2014 09:29
par lokomass
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
Re: [..] Convertir millisecondes en temps
Posté : mar. 02 sept. 2014 10:06
par jguinch
J'ai pas trop regardé ton code...
Perso, j'étais parti sur
_TicksToTime() pour simplifier le boulot
► Afficher le texte
Code : Tout sélectionner
#include <Date.au3>
Local $iTime = 7319000
Local $sTime = _HumanTime($iTime)
MsgBox(0, "", $iTime & " = " & $sTime)
Func _HumanTime($iMs)
Local $iDays, $iHours, $iMins, $iSecs, $sTime
_TicksToTime ($iMs, $iHours, $iMins, $iSecs )
If @error Then Return SetError(@error, 0, 0)
If $iHours > 24 Then
$iDays = Int($iHours / 24)
$iHours = $iHours - ($iDays * 24)
EndIf
$sTime = $iDays ? $iDays & " jour" & ($iDays > 1 ? "s " : " " ) : ""
$sTime &= $iHours ? $iHours & " heure" & ($iHours > 1 ? "s " : " " ) : ""
$sTime &= $iMins ? $iMins & " minute" & ($iMins > 1 ? "s " : " " ) : ""
$sTime &= $iSecs ? $iSecs & " seconde" & ($iSecs > 1 ? "s " : " " ): ""
Return $sTime
EndFunc
Re: [..] Convertir millisecondes en temps
Posté : mer. 03 sept. 2014 09:39
par lokomass
Merci pour ta réponse, je vais prendre ta fonction elle est beaucoup plus simple que la mienne
