Date et heure ConvertSeconds

Magic_Doctor

XLDnaute Barbatruc
J'en avais besoin, donc je l'ai fait. Mais je pense que l'on peut faire plus simple.
VB:
Function ConvertSeconds(sec#) As String
'Converti des desondes en années | jours | heures | minutes | secondes
'Magic_Doctor

    Dim a#, j#, h As Byte, mn As Byte, s As Byte, suf1$, suf2$
    
    j = Int(sec / 86400)
    a = Int(j / 365)
    h = Int((sec - j * 86400) / 3600)
    mn = Int(((sec - j * 86400) / 3600 - h) * 60)
    s = Int((((sec - j * 86400) / 3600 - h) * 60 - mn) * 60)
    j = j - a * 365
    suf1 = IIf(a = 0, "", IIf(a = 1, " an", " ans"))
    suf2 = IIf(j = 0, "", IIf(j = 1, " jour", " jours"))
    
    ConvertSeconds = IIf(a = 0, "", a & suf1 & " ") & IIf(j = 0, "", j & suf2 & " ") & IIf(h < 10, "0", "") & h & ":" & IIf(mn < 10, "0", "") & mn & ":" & IIf(s < 10, "0", "") & s
End Function
 

Magic_Doctor

XLDnaute Barbatruc
Re,

Quelle que soit la date de départ (que l'année soit bissextile ou pas), un fait est certain :
3 * 10^9 sec correspondent toujours, en jours, à : 3 * 10^9 / 86400, soit : 34722,222222222222222222222222222...
Le nombre de jours sera ni plus ni moins que la partie entière de ce nombre rationnel , soit : 34722 jours.
La partie décimale du nombre, soit 0,2222222 correspondra à la fraction de jour que l'on convertira en heures:mn:sec.
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
1
Affichages
738

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95