IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème Formater Heure


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut Problème Formater Heure
    Bonjour à tous,

    J'ai actuellement un petit soucis en Visual Basic 2005.

    Effectivement actuellement je récupère un champ temps comme suit "2h" ou encore "2heures" j'aimerais par l'intermédiaire d'une fonction le formater de la façon suivante :

    00:02:00 c'est à dire passer d'un format H à HH:MM

    Si quelqu'un à une idée pour une fonction simple de façon à ne pas allourdir mon code. Je vous remercie par avance

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    A partir de "2h" ou "2heures" tu ne pourras pas directement récupérer une date, il va falloir passer par quelques retraitements.

    Voici un exemple de code commenté :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    ' La liste des valeurs que l'on a en source, et que l'on va retraiter
    ' avant de les convertir
    Dim originalValues = New List(Of String)(New () {"2h", "12heures"})
     
    ' La liste des valeurs à convertir
    Dim valuesToConvert = New List(Of String)()
     
    ' La liste des valeurs converties (le résultat)
    Dim convertedValues = New List(Of String)()
     
    ' Pour chacune des valeurs d'origine...
    originalValues.ForEach(Function(val) Do
        ' On extrait les entiers à l'aide d'une expression régulière
        Dim matches = Regex.Matches(val, "\d+")
     
        If matches.Count > 0 Then
            ' Pour chacun des entiers...
            For Each match As var In matches
                Dim matchValue = match.ToString()
     
                ' Si on a un seul chiffre, on rajoute un zéro devant
                If matchValue.Length = 1 Then
                    matchValue = "0" + matchValue
                End If
     
                ' On ajoute la valeur à la liste des valeurs que l'on va convertir
                valuesToConvert.Add(matchValue)
            Next
        End If
    End Function)
     
    ' Pour chacune des valeurs à convertir...
    valuesToConvert.ForEach(Function(value) Do
        ' On parse la valeur avec le format de notre choix (ici HH)
        Dim parsed = DateTime.ParseExact(value, "HH", CultureInfo.InvariantCulture)
     
        ' On reformate notre valeur parsée pour obtenir l'affichage souhaité
        Dim result = parsed.ToString("HH:mm")
     
        ' Puis on ajoute la valeur reformatée dans la liste des résultats
        convertedValues.Add(result)
    End Function)
     
    ' Pour chacun des résultats...
    convertedValues.ForEach(Function(result) Do
        ' On affiche une ligne dans la console
        Console.WriteLine(result)
    End Function)
     
    ' Hack pour éviter que la console ne se ferme directement
    Console.ReadKey()
    Pour le faire tourner, tu copies/colles dans le Main() d'une application console

    En sortie, on obtient :
    "02:00"
    "12:00"

    Pour en savoir plus sur les formats liés au format date/time, voir ce lien : http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut
    Merci Matt, ca marche très efficace c'est sympa parce que je me galerais bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème format heure minute sec et ms
    Par pjulie dans le forum R
    Réponses: 0
    Dernier message: 04/06/2015, 17h19
  2. [XL-2003] Problème Format Heure
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2009, 09h35
  3. problème format heure
    Par meldja dans le forum IHM
    Réponses: 5
    Dernier message: 26/02/2009, 19h24
  4. Probléme de format heure dans le textbox
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2008, 18h20
  5. [CR 4.6]Problème affichage une format heur
    Par amazircool dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 08/07/2006, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo