VB: Récupérer l'heure sur un serveur de temps.

Résolu
Anonyme209 Messages postés 761 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

Je programme en Visual Basic 2010.
J'aimerais pouvoir synchroniser l'heure du système avec l'heure d'un serveur de temps web. Pour modifier l'heure du système, j'ai trouvé "TimeString = "hh:mm:ss"", mais ne marche que en mode admin. Et je ne sais pas comment récupérer l'heure d'un serveur web.

Merci de votre aide.

12 réponses

  1. Anonyme209 Messages postés 761 Statut Membre 19
     
    Merci, je vais me servir du code du projet et l'adapter pour mon programme.

    Si ce n'est pas trop demandé, il y a encore trois autres points qui pourraient m'être utiles:

    - Récupérer la date sur Internet (je devrais pouvoir me débrouiller tout seul)
    - Détecter automatiquement si on est en heure d'été ou en heure d'hiver.
    - Modifier l'heure système sans démarrer en mode admin (je ne pense pas que ça soit possible, mais je demande quand-même)
    Merci de votre aide
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Pour le 1er point il faut changer l'adresse:

    adress = "https://ntp.alapetite.fr/date.txt.php"

    et ensuite dans Private Sub Timer1_Tick:

     Dim s As String = texte
       'manipulation des chaines de caractères    
            Dim separateur As Char = CChar("T")
            Dim nom() As String
            nom = s.Split(separateur)
            lbldate.Text = nom(0)


    pour le 2ème point chercher dans la manipulation des chaines de caractères pour trouver le 2

    Le 3ème point je ne sais pas, il faudra faire un nouveau post.

    Bonne programmation

    0
  3. Anonyme209 Messages postés 761 Statut Membre 19
     
    Bonjour,

    Merci de votre aide.

    Je sais que de modifier le 2 par 1 dans l'adresse permet d'afficher au choix l'heure d'été et l'heure d'hiver.
    Ce que je voudrais, c'est détecter automatiquement s'il faut mettre un 2 ou un 1.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Il faut regarder sur le calendrier le passage de l'heure d'été à l'heure d'hiver et inversement et avec la date que vous récupérez dans le lbldate.Text il suffit de faire un If
    Le changement est le 26-10-2014 donc :

     If  lbldate.Text = 26/10/2014 Then'il faudra voir le format Date et corriger si besoin
      adress = "http://www.Heure.com/heure-fr.php?timezone=1&size=36"
    End If
    
    

    Voilà c'est pas plus compliqué que cela

    0
  6. Anonyme209 Messages postés 761 Statut Membre 19
     
    Bonjour,

    Merci pour la réponse, mais il y a juste un problème:

    Ca ne marche que pour le passage à l'heure d'hiver de 2014.
    J'aimerais que ça marche pour tout le temps.
    (Par exemple, regarder sur le calendrier le passage heure été à heure hiver directement en vb)
    0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Pour cela il faut voir avec les numéros de semaine, je pense que c'est toujours les mêmes semaines: dernier dimanche de mars (14) et d'octobre(44). Donc faire une recherche pour rechercher le numéro de la semaine que l'on mettra dans une variable (masemaine) qui s'inscrira à l'ouverture de l'application. Ensuite il suffit à l'ouverture de faire :

    Si masemaine = 14 alors
    on change d'heure
    fin si

    Je te laisse le soin de faire une recherche sur Google pour trouver en VB.NET le numéro de la semaine courante
    Cela changera le lundi après on peut affiner avec les dates. A toi de voir
    0
  8. Anonyme209 Messages postés 761 Statut Membre 19
     
    Merci beaucoup,
    je devrais pouvoir me débrouiller avec ça.
    0
  9. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    J'ai trouvé une source en VB6 pour trouver les jours des changements d'heure . Je l'ai adapter en VB.Net si cela t'interesse tu pourras l'integrer à ton programme.

    Dans un Form mettre un Button et 2 Label, voici le code avec le lien de la source en VB6:

    Option Strict On
    Public Class Form1
        'http://codes-sources.commentcamarche.net/source/24735-calcul-du-decalage-heure-ete-hiver-en-fonction-d-une-date
        Dim seuilete As Date
        Dim seuilhiver As Date
        Dim dteData As Date
        Dim iddate As String
        Dim jour As Integer
        Dim uneDateC As Decimal 'nombre jour depuis début année
        Dim seuileteC As Decimal 'jour debut année heure ete
        Dim seuilhiverC As Decimal 'jour debut année heure d'hiver 
        Dim DateS As String
        Dim DateD As DateTime
        Dim Annee As String
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'mis à jour des dates
            dteData = Now 'today
            Annee = (dteData.ToString("yyyy")) 'année en cours
            'uneDate = CDate(TextBox1.Text)
            iddate = "25/03/" & Annee & " 02:00:00"
            'on est le 25 mars de la même année
            seuilete = CDate(iddate)
            jour = Weekday(seuilete, vbMonday)
            'combien de jours avant d'atteindre le prochain dimanche?
            iddate = (32 - jour) & "/03/" & Annee & " 02:00:00"
            seuilete = CDate(iddate)
            Label1.Text = "heure d'ete: " & Format(seuilete, "dddd d MMM yyyy")
            '----------------------------------------------------------------------
            'idem mais pour l'heure d'hiver
            'on est le 25 Octobre de la même année
            iddate = "25/10/" & Annee & " 02:00:00"
            seuilhiver = CDate(iddate)
            jour = Weekday(seuilhiver, vbMonday)
            'combien de jours avant d'atteindre le prochain dimanche?
            iddate = (32 - jour) & "/10/" & Annee & " 02:00:00"
            seuilhiver = CDate(iddate)
            Label2.Text = "heure d'hiver: " & Format(seuilhiver, "dddd d MMM yyyy")
            '--------------------------------------------------------------------
            'une petite comparaison
            DateS = ("01/01/" & Annee) 'Saisir une date : on récupère une string
            DateD = CDate(DateS) 'Conversion de la string en DateTime
            uneDateC = DateDiff(DateInterval.Day, DateD, Now)
            MsgBox("Aujourd'hui " & uneDateC & " jours depuis le début de l'année")
            seuileteC = DateDiff(DateInterval.Day, DateD, seuilete) 'différence en jours à partir debut d'année a l'heure d'été
            MsgBox("L'heure d'été est à " & seuileteC & " jours depuis le début de l'année")
            seuilhiverC = DateDiff(DateInterval.Day, DateD, seuilhiver) 'différence en jours  heure d'hiver à la fin de l'année
            MsgBox("L'heure d'hiver est à " & seuilhiverC & " jours depuis le début de l'année")
            If (seuileteC < uneDateC) And (uneDateC < seuilhiverC) Then
                MsgBox("Nous sommes en heure été")
            Else
                MsgBox("Nous sommes en heure hiver")
            End If
        End Sub
    End Class
    


    Bonne programmation
    0
  10. Anonyme209 Messages postés 761 Statut Membre 19
     
    Merci, ton code est très utile
    0