Tipp 0058 UTC-, Normal- und Sommer-Zeit ermitteln
Autor/Einsender:
Datum:
  Michael Werner
10.10.2004
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
Die Members der Klasse TimeZone dienen zur Ermittlung der Normalzeit (Ortszeit), der UTC-Zeit, der lokalen Sommerzeit und dem Offset. Die koordinierte Weltzeit (UTC) wurde früher als Greenwich Mean Time (GMT) bezeichnet. Die Ortszeit ist die Zeit auf dem gegenwärtig verwendeten Computer. Offset ist die Differenz zwischen Ortszeit und UTC (dies bedeutet Ortszeit = UTC + Offset).
 
Imports System.TimeZone

Public Class Form1
  Inherits System.Windows.Forms.Form
Vom Windows Form Designer generierter Code
  Private Sub Form1_Load(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles MyBase.Load
    Dim c As Control
    For Each c In Me.Controls
      If TypeOf c Is Label Then
        c.BackColor = Color.LightCoral
      End If
    Next
    Label12.Text = "Aktuell gültigen Zeitzone"
    Label13.Text = "Name der Normalzeit:"
    Label14.Text = "Namen der Sommerzeitzone:"
    Label15.Text = "Die Sommerzeit beginnt:"
    Label16.Text = "Die Sommerzeit endet:"
    Label17.Text = "Aktuelle UTC-Zeit:"
    Label18.Text = "Aktuelle Lokalzeit:"
    Label19.Text = "Aktuelle Zeitverschiebung gegenüber" & _
                   " UTC-Zeit in Minuten:"
    Label20.Text = "Zeitverschiebung der Normalzeit " & _
                   "gegenüber UTC-Zeit in Minuten:"
    Label21.Text = "Zeitverschiebung der Sommerzeit " & _
                   "gegenüber UTC-Zeit in Minuten:"
    Label22.Text = "Unterschied zwischen Sommer- und " & _
                   " Winterzeit in Minuten:"

    'Aktuelle Zeitzone
    '-----------------

    Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone

    'Ausgabe des Namens der aktuell gültigen Zeitzone -
    'beinhaltet die Abfrage, ob aktuell Sommerzeit ist:

    'Name der aktuellen Zeitzone:
    '----------------------------

    If tz.IsDaylightSavingTime(Now) Then
      Label1.Text = tz.DaylightName.ToString()
    Else
      Label1.Text = tz.StandardName.ToString()
    End If

    'Name der Normalzeit:
    '--------------------

    Label2.Text = tz.StandardName

    'Sommerzeit Beginn/Ende
    '----------------------

    ' Besitzt die aktuelle Zeitzone eine Sommerzeitzone?
    If Len(tz.DaylightName) = 0 Then
      Label3.Text = "Diese Zeitzone verwendet keine Sommerzeit."
    Else
      ' Den Namen der Sommerzeitzone ausgeben:
      Label3.Text = tz.DaylightName
      ' Start und Enddatum der Sommerzeit ermitteln
      Dim dtStart, dtEnd As DateTime
      dtStart = tz.GetDaylightChanges(Year(Now)).Start
      dtEnd = tz.GetDaylightChanges(Year(Now)).End

      'Die Sommerzeit beginnt und endet:
      Label4.Text = dtStart.ToShortDateString & "  " & _
                    dtStart.ToShortTimeString()
      Label5.Text = dtEnd.ToShortDateString & "  " & _
                    dtEnd.ToShortTimeString

      'Umrechnung einer Lokalzeit in UTC-Zeit
      '----------------------------------------
      'Aktuelle Lokalzeit
      Dim dt As DateTime = Now
      'Berechnung der UTC-Zeit
      Dim dtUtc As DateTime = tz.ToUniversalTime(dt)

      'Aktuelle UTC-Zeit:
      Label6.Text = dtUtc.ToString
      ' Umrechnung einer UTC-Zeit in Lokalzeit:
      dt = tz.ToLocalTime(dtUtc)
      'Aktuelle Lokalzeit:
      Label7.Text = dt.ToString

      'Die jeweiligen Zeitverschiebungen gegen UTC-Zeit ermitteln:
      '-----------------------------------------------------------

      'Die aktuelle Zeitverschiebung gegenüber UTC-Zeit beträgt
      '(Minuten)
      Label8.Text = tz.GetUtcOffset(Now).TotalMinutes.ToString

      'Zeitverschiebung der Normalzeit gegenüber UTC-Zeit
      '(Minuten)
      Label9.Text = tz.GetUtcOffset(dtStart).TotalMinutes.ToString

      'Zeitverschiebung der Sommerzeit gegenüber UTC-Zeit
      '(Minuten)
      Label10.Text = tz.GetUtcOffset(dtStart.AddDays(1)). _
                             TotalMinutes.ToString

      'Ermitteln der Unterschieds zwischen Sommer- und
      'Winterzeit (Minuten)
      Label11.Text = tz.GetDaylightChanges(Year(Now)). _
                             Delta.TotalMinutes.ToString
    End If
  End Sub

  Private Sub Button1_Click_1(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    Me.Close()
  End Sub
End Class
 
Weitere Links zum Thema
Datumsformat (länderspezifisch)
Kalenderwoche eines Datums ermitteln
Zeitdifferenzen berechnen

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (7,9 kB) Downloads bisher: [ 1044 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Montag, 23. Januar 2012