Nachfolgender Tipp zeigt, wie sich unter VB 2005 die Atomzeit über das Internet auslesen und die aktuelle Systemzeit entsprechend der Atomzeit aktualisieren lässt. Alles, was Sie hierzu brauchen, ist die Adresse eines Time-Servers, sowie die System.Net.Sockets-Klasse. Als Time-Server nehmen wir in unserem Beispiel time-a.nist.gov. Die Atomzeit wird hierbei in folgendem Format übermittelt: xxxxx yy-mm-dd hh:mm:ss xx x x xx.x UTC(NIST) *. Man braucht dann lediglich das Datum und die Uhrzeit zu extrahieren und die Zeit-Differenz zur GMT-Zeit addieren (Sommer-/Winterzeit). Imports System.Net.Sockets Imports System.Text Private Function AtomicTime(ByVal sTimeServer As String) As Date ' Standard-Rückgabewert bei Fehler Dim vDate As Date = Nothing Try ' Verbindung zum TimerServer herstellen Dim oClient As TcpClient = New TcpClient() oClient.Connect(sTimeServer, 13) ' NetworkStream-Objekt für die Antwort Dim oStream As NetworkStream = oClient.GetStream() ' Antwort des TimeServer lesen Dim cCh1 As Char Dim sResponse As New StringBuilder Dim nByte As Integer ' solange byteweise einlesen, bis keine ' Daten mehr vom Server zurückkommen Do nByte = oStream.ReadByte() If nByte = -1 Then Exit Do cCh1 = System.Convert.ToChar(nByte) sResponse.Append(cCh1.ToString) Loop Until nByte = 13 ' Verbindung trennen oClient.Close() If sResponse.Length > 0 Then Dim sBuffer As String = sResponse.ToString ' Atomzeiten werden in folgendem Format übermitteln: ' xxxxx yy-mm-dd hh:mm:ss xx x x xx.x UTC(NIST) * ' Datum und Uhrzeit aus dem Rückgabestring des ' TimeServers extahieren If sBuffer.Contains(" ") Then Dim sData() As String = sBuffer.Split(" ") If sData(1).Length = 8 AndAlso sData(2).Length = 8 Then ' Datumsangabe in Einzelteile splitten Dim sDate() As String = Split(sData(1), "-") ' Uhrzeitangabe in Einzelteile splitten Dim sTime() As String = Split(sData(2), ":") ' einzelne Datumswerte und Uhrzeitwerte zu neuem ' Date-Objekt zusammenstellen vDate = New DateTime(2000 + CInt(sDate(0)), _ CInt(sDate(1)), CInt(sDate(2)), _ CInt(sTime(0)), CInt(sTime(1)), CInt(sTime(2))) ' jetzt noch ggf. Sommer/Winterzeit berücksichtigen Dim nDif As Integer = Val(Now.ToString("zzzz").Substring(0, 3)) If nDif <> 0 Then vDate = vDate.AddHours(nDif) End If End If End If End If Catch ex As Exception vDate = Nothing End Try Return vDate End Function Die Funktion gibt im Erfolgsfall die ermittelte Atomzeit zurück. Sollte der Time-Server nicht erreichbar sein oder ein anderweitiger Fehler auftreten, wird "Nothing" zurückgegeben. Aufrufbeispiel: Dim vDate As Date = AtomicTime("time-a.nist.gov") If Not vDate = Nothing Then MsgBox("Die aktuelle Atomzeit ist: " & vDate) ' Systemzeit mit Atomzeit aktualisieren Microsoft.VisualBasic.DateString = vDate.ToString("MM-dd-yyyy") Microsoft.VisualBasic.TimeString = vDate.ToString("HH:mm:ss") Else MsgBox("Atomzeit konnte nicht ermittelt werden!") End If Dieser Tipp wurde bereits 23.532 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |