Convertir des secondes en heures HH:MM [Résolu]

Signaler
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020
-
Messages postés
14572
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 août 2020
-
Bonjour à tous et toutes,

Je recherche une solution pour convertir un label qui contient un chiffre en seconde pour le passé au format hh:mm

En cherchant j'ai trouvé des choses intéressantes du côté du TimeSpan mais je n'arrive pas utiliser la structure, auriez-vous une idée ?

Merci par avance

2 réponses

Messages postés
14572
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 août 2020
426
Bonjour

ou alors utiliser les outils de la framework
        Dim secondes As Integer = 4321
        Dim temps As TimeSpan = TimeSpan.FromSeconds(secondes)
        Dim hhmmss As String = temps.ToString()
        Dim hhmm As String = temps.ToString("hh\:mm")

Messages postés
14572
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 août 2020
426
Bien sûr pour les économes en ligne de codes
TimeSpan.FromSeconds(4321).ToString("hh\:mm")
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

Merci pour vos retours, je privilégie effectivement la solution TimeSpan qui me plait bien et effectivement plus court ;)

Top !
Messages postés
14572
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 août 2020
426
De rien
Messages postés
6865
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 août 2020
109
Bonjour,

Il y a des quantités de réponses sur le net. En voici une parmi tant d'autres:

https://codes-sources.commentcamarche.net/source/929-conversion-d-un-temps-en-secondes-au-format-hh-mm-ss
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

J'ai testé cet exemple mais sans succès

Public Class Form1
Dim TempsTotal As Long 'TempsTotal est le temps en secondes
Dim Heures As Integer
Dim Minutes As Integer
Dim Secondes As Integer

Sub Conversion(TempsTotal)
TempsTotal = Txt_seconde.Text
Heures = Int(TempsTotal / 3600)
Minutes = Int((TempsTotal - 3600 * Heures) / 60)
Secondes = TempsTotal - 3600 * Heures - 60 * Minutes

Label1.Text = Format(Str(Heures + ":" + Minutes + ":" + Secondes))

End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Conversion(TempsTotal)

End Sub
End Class



Une exception non gérée du type 'System.InvalidCastException' s'est produite dans Microsoft.VisualBasic.dll

Informations supplémentaires : La conversion de la chaîne ":" en type 'Double' n'est pas valide.
Messages postés
6865
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 août 2020
109
comme ceci:

Option Strict On
Public Class Form1
    Dim Temps As Long 'TempsTotal est le temps en secondes
    Dim Heures As Integer
    Dim Minutes As Integer
    Dim Secondes As Integer
    Sub Conversion(ByVal TempsTotal As Long)
        Heures = CInt(Int(TempsTotal / 3600))
        Minutes = CInt(Int((TempsTotal - 3600 * Heures) / 60))
        Secondes = CInt(TempsTotal - 3600 * Heures - 60 * Minutes)
        Label1.Text = (Format(Heures & ":" & Minutes & ":" & Secondes)) 'là, on a le temps formaté hh:mm:ss
        'Format sert à afficher 2 chiffres pour les heures, les minutes et les secondes
        'Exemple: avec Format: 08:05:23
        '         sans Format: 8:5:23
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Temps = 12500
        Conversion(Temps)
    End Sub
End Class


voilà

@+ Le Pivert