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 :

L'heure .. Une vrai galère !


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut L'heure .. Une vrai galère !
    Salutation à toutes et a tous !

    Tout d'abord, je suis en VB 2010 express !

    Voilà. J'essaye de comparer des heures. Fort compliqué tout ça !
    J'ai donc essaye de prendre des tranches d'heures. Comme 01h => 11h ; 11h => 14h ; 14h => 23h

    J'ai voulu faire en sorte que si l'heure de l'ordinateur est par exemple a 7H il me dise que c'est le matin etc !

    Mais je n'y arrive pas. J'ai donc créer des Dim, De tel sorte que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Dim Heur1 As New DateTime(1)
        Dim Heur11 As New DateTime(11)
        Dim Heur14 As New DateTime(14)
        Dim Heur23 As New DateTime(23)
    J'ai donc chercher pour trouver des intervalles, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        If Heur1 < DateTime.Today < Heur11 Then
              MsgBox("C'est le matin")
        End If
    Des trucs de ce genre. Mais je n'y arrive pas .. ça ne fonctionne pas !

    J'ai essaye de m'aider avec ceci : http://plasserre.developpez.com/cour...ge=langage-vb8
    Mais je ne trouve pas grand chose ..

    Merci de votre aide !
    Bonne journée !
    Cordialement.

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    1. Le constructeur de DateTime que tu utilises ne fait absolument pas ce que tu penses qu'il fait ; je te renvoie à sa documentation pour mieux comprendre
    2. DateTime.Today renvoie une instance de DateTime correspondant au jour actuel mais sans notion d'heure (donc l'heure est à 00:00:00) ; ça risque d'être compliqué de comparer des heures en utilisant une propriété qui ne tient pas compte de l'heure
    3. Pour vérifier si une valeur est dans un intervalle faire truc < machin < bidule ça ne marchera pas il faut comparer les deux inégalités séparément du genre truc < machin AndAlso machin < bidule
    4. Attention aussi à ce que tes dates "bornes" soient bien du "bon jour" parce que si tu compares "demain 1h" avec "aujourd'hui 7h" ça te renverra que c'est 7h qui est plus petit que 1h (la Date ET l'Heure forment un "tout")
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    1. Le constructeur de DateTime que tu utilises ne fait absolument pas ce que tu penses qu'il fait ; je te renvoie à sa documentation pour mieux comprendre
    2. DateTime.Today renvoie une instance de DateTime correspondant au jour actuel mais sans notion d'heure (donc l'heure est à 00:00:00) ; ça risque d'être compliqué de comparer des heures en utilisant une propriété qui ne tient pas compte de l'heure
    3. Pour vérifier si une valeur est dans un intervalle faire truc < machin < bidule ça ne marchera pas il faut comparer les deux inégalités séparément du genre truc < machin AndAlso machin < bidule
    4. Attention aussi à ce que tes dates "bornes" soient bien du "bon jour" parce que si tu compares "demain 1h" avec "aujourd'hui 7h" ça te renverra que c'est 7h qui est plus petit que 1h (la Date ET l'Heure forment un "tout")
    Bonjour !

    Tout d'abord merci beaucoup de votre réponse très rapide !
    Je vais aller me lancer dans la lecture alors ! :')
    Mais quelle est la ligne qui permet de comparer juste l'heure alors ? Car "Time" n'existe pas :/
    Je vais me documenter un peu sur le AndAlso aussi !

    Merci beaucoup !

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par Duskwood Voir le message
    Mais quelle est la ligne qui permet de comparer juste l'heure alors ? Car "Time" n'existe pas :/
    DateTime.TimeOfDay
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Bonjour,
    C'est un peu logique de ne pas pouvoir comparer deux heures sans connaitre le jour, le mois et l'année...
    C'est un peu comme la blague:
    "RDV vendredi midi"
    Quelle semaine?, quelle année?...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim Date_a As DateTime = "12/12/2014 12:36:17"
            Dim Date_b As DateTime = "12/12/2014 12:36:18"
            MessageBox.Show(Date_b.ToString & " Suppérieure à " & Date_a.ToString & " = " & (Date_b > Date_a).ToString)
            MessageBox.Show(Date_a.ToString & " Suppérieure à " & Date_b.ToString & " = " & (Date_a > Date_b).ToString)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Dim Date_a As DateTime = "12/12/2014 12:36:17"
            If Date_a.Hour < 12 Then
                MessageBox.Show("matin")
            Else
                MessageBox.Show("aprem")
            End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim Date_Now As DateTime = DateTime.Now.ToLocalTime
            Dim Date_a As DateTime = "12/12/2014 12:36:17"
            Dim Date_b As DateTime = "12/02/2015 12:36:18"
            MessageBox.Show(Date_a.ToString & " Suppérieure à aujourd'hui (" & Date_Now.ToString & ") = " & (Date_a > Date_Now).ToString)
            MessageBox.Show(Date_b.ToString & " Suppérieure à aujourd'hui (" & Date_Now.ToString & ") = " & (Date_b > Date_Now).ToString)
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Merci ! Je venais de trouver haha

    Bonjour ACIVE_CS

    Je suis d'accord, c'est pas très clair !
    Merci pour les petites parties de code ! ça m'aide beaucoup aussi !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Re:
    Après ça dépend où tu récupères ces données
    Par exemple moi j'avais une caméra qui enregistrait des fichiers mp4 sous le format: "21-01-2015_13-45-15.mp4"

    Il fallait alors traiter le nom du fichier, quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Dim NomFichier As String = "21-01-2015_13-45-15.mp4"
            Dim DateHeure As String = NomFichier.Split("."c)(0) '(0) c'et la partie à gauche du point
            Dim Dat As String = DateHeure.Split("_"c)(0)  '(0) c'et la partie à gauche du "_"
            Dat = Dat.Replace("-", "/") 'on remplace les "-" par "/"
            Dim Heur As String = DateHeure.Split("_"c)(1)  '(1) c'et la partie à droite du "_"
            Heur = Heur.Replace("-", ":")
            Dim DateDuFichier As DateTime = Dat & " " & Heur
            MessageBox.Show(DateDuFichier.ToString)
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Duskwood Voir le message
    Salutation à toutes et a tous !
    J'ai voulu faire en sorte que si l'heure de l'ordinateur est par exemple a 7H il me dise que c'est le matin etc !
    Bonjour,

    pour répondre à ta question voici comment je procéderais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            If DateTime.Now.ToString("tt", CultureInfo.InvariantCulture) = "AM" Then
                MsgBox("Nous sommes le matin !")
            ElseIf DateTime.Now.ToString("tt", CultureInfo.InvariantCulture) = "PM" Then
                MsgBox("Nous sommes l'après-midi !")
            End If
    PS1 : n'oublies pas d'importer l'espace de noms suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Globalization
    PS2 : je me suis inspiré de ce site pour le formatage des dates.

    A+

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Bonjour,

    pour répondre à ta question voici comment je procéderais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            If DateTime.Now.ToString("tt", CultureInfo.InvariantCulture) = "AM" Then
                MsgBox("Nous sommes le matin !")
            ElseIf DateTime.Now.ToString("tt", CultureInfo.InvariantCulture) = "PM" Then
                MsgBox("Nous sommes l'après-midi !")
            End If
    PS1 : n'oublies pas d'importer l'espace de noms suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Globalization
    PS2 : je me suis inspiré de ce site pour le formatage des dates.

    A+
    Bonjour !

    Je vous remercie de cette réponse, je ne connaissais pas cette solutions !

    Encore merci A+ !

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            Dim DatPM As Date = CDate("14/08/2011 12:45:13")
            Dim DatAM As Date = CDate("14/08/2011 10:45:13")
            MessageBox.Show("Français :" & Environment.NewLine & _
                            DatAM.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture).Replace("AM", "Matin") & Environment.NewLine & _
                            DatPM.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture).Replace("PM", "Aprem") & Environment.NewLine & _
                            Environment.NewLine & "Chinois :" & Environment.NewLine & _
                            DatAM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("zh-CHS")) & Environment.NewLine & _
                            DatPM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("zh-CHS")) & Environment.NewLine & _
                            Environment.NewLine & "Hongrois :" & Environment.NewLine & _
                            DatAM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("hu-HU")) & Environment.NewLine & _
                            DatPM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("hu-HU")) & Environment.NewLine & _
                            Environment.NewLine & "India :" & Environment.NewLine & _
                            DatAM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("te-IN")) & Environment.NewLine & _
                            DatPM.ToString("hh:mm:ss tt", CultureInfo.CreateSpecificCulture("te-IN")))
    Par nature les mots, ils sont flous, c'est une fois alignés qu'ils se précisent.

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 56
    Points
    56
    Par défaut
    Salut,

    tu as accès aux propriétés tels que Hour et Minute de la classe Date.

    tu peux également utiliser DateDiff afin de comparer deux dates par rapport à une intervalle de temps


    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim dd As DateTime = New DateTime(2015, 2, 3, 18, 0, 0)
    Dim hour As Integer = dd.Hour
    Dim minute As Integer = dd.Minute
    Dim dd2 As DateTime = New DateTime(2015, 2, 3, 19, 0, 0)
    Dim l As Long = DateDiff(DateInterval.Hour, dd, dd2)


    résultat l = 1, une heure de diff

Discussions similaires

  1. [Débat] Quel sera le début d'une vrai IA ?
    Par Golgotha dans le forum Intelligence artificielle
    Réponses: 49
    Dernier message: 10/07/2010, 13h51
  2. Réponses: 0
    Dernier message: 08/10/2008, 14h25
  3. [Mail] Une petite galère de mail
    Par tremeur53 dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2008, 01h36
  4. Et une nouvelle galère IE 6, une !
    Par tremeur53 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/01/2008, 21h48
  5. [VBA-E]ajouter 2 heure à une date récupéré d'une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2006, 08h55

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