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 6 et antérieur Discussion :

[VB]Format heure enc millisecondes


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut [VB]Format heure enc millisecondes
    j'ai également un problème avec un format d'heure.
    Je veux créer un fichier de trace avec date et heure
    mais j'aimerais avoir une précision à la millisecondes pour
    ce qui est de l'heure.
    J'ai pas trouvé le format qui va bien

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Il faut utiliser une variable systemtime avec getlocaltime.

  3. #3
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Citation Envoyé par DarkVader
    Il faut utiliser une variable systemtime avec getlocaltime.
    Peux tu en dire plus? J'ai été un peu à la pêche aux info, mais n'ai rien trouvé qui me soit exploitable, tout étant en anglais.

    Merci

  4. #4
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    la methode gettick count est trés apropriée, même si elle ne permet pas de donner l'heure, il suffit de se caller sur un changement de seconde de l'horloge windows.

    par contre, il est vrai qu'on ne peut palier au réglage de l'heure windows.

    salut

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    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
    16
    17
    18
    Public Type SystemTime
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
    End Type
    Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SystemTime)
     
    Public Function LocalTime()
        Dim Now0 As SystemTime
        GetLocalTime Now0
     
        LocalTime = format(Now0.wHour, "00") & ":" & format(Now0.wMinute, "00") & ":" & format(Now0.wSecond, "00") & " " & format(Now0.wMilliseconds, "000")
    End Function

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par DarkVader
    Tu es sur de ce que tu affirmes un peu vite ?
    à propos de quoi?
    le methode gettick count est adéquate s'il veut mesurer une courte durée, la methode getlocaltime est mieux pour en mesurer une apres un redémarage ou autre.

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Autant pour moi - pour la précédente observation par contre :
    - getTickcount est d'une précision bien moindre que QueryPerformanceCounter pour calculer un intervale précis (>1000)
    - pourquoi après un redémarrage !

  8. #8
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par DarkVader
    - getTickcount est d'une précision bien moindre que QueryPerformanceCounter pour calculer un intervale précis (>1000)
    pourquoi donc? gettickcount à une précison d'une miliseconde tout comme getlocaltime
    Citation Envoyé par DarkVader
    - pourquoi après un redémarrage !
    par-ce qu'alors que la methode gettickcount conpte le tombre de seconde depuis le redémarage, ce qui est pratique pour calculer une durée lorsque l'ordinateur est allumé (une simple différence suffit), getlocaltime peut être repris apres redémarage et avoir une différence exacte.

    salut

  9. #9
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    QueryPerformanceCounter fournit un compteur de l'ordre du 1/1 000 000 sec (voir moins) alors que Gettickcount n'est précis qu'au 1/1000e sec
    il est donc préférable pour apprécier la performance d'une routine rapide même si gettickcount est souvent très suffisant.

    Bon, on va pas troller 107 ans.

  10. #10
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Pas dans le code fourni plus haut évidemment mais dans le cadre d'optimisation de routines -
    pour exemple, amuses-toi à mesurer avec gettickcount les tests suivants
    en faisant varier k sur 100, 1000, 10 000

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim x As Long, k as long, a As Long  
     
        For x = 1 To k
            a = a + 1
        Next
    avec QueryPerformanceCounter j'obtiens
    100 => 31/1 000 000 ±2
    1 000 => 68/ 1 000 000 ±1.5
    10 000 => 489/1 000 000 ±52
    en mode interprêté soit une répartition parfaitement linéaire .

    Et toi avec gettickcount ?
    t'es bien capable d'avoir autre chose que 1 par moment lol

  11. #11
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    bon alors après une série de test, force est de constater que la précision est de 7 ms:

    pour 1 000: 0 ms tout le temps
    pour 10 000: 0 ms tout le temps
    pour 100 000: entre 0 et 16
    pour 1 000 000 :entre 47 et 64
    pour 10 000 000 :entre 531 et 547

    bref, je pensait que c'étais précis à la ms mais finalement non.

    au fait, pourraist-tu me donner la methode d'apel du QueryPerformanceCounter (ou du moin la dll: c'et un kernel 32 ou non?)

    salut

  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Tu as un exemple sur AllApi.net

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/05/2007, 04h08
  2. Format Heure : + de 24 H impossible
    Par priest69 dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2006, 00h34
  3. probleme format heures access
    Par nath-nancy dans le forum Access
    Réponses: 9
    Dernier message: 28/11/2005, 17h36
  4. Convertir une chaine en format heure
    Par Lars dans le forum ASP
    Réponses: 3
    Dernier message: 24/05/2005, 12h44
  5. Format heure dans Interbase
    Par Battomura dans le forum InterBase
    Réponses: 2
    Dernier message: 14/03/2003, 14h17

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