Wie Datumsangaben verarbeiten und Zeiten DST

Einführung

Entwickler schreiben, die Datums- und Uhrzeitangaben behandeln können eine oder mehrere Technologien, die Manipulation von Datum und Zeit Bearbeitung ausführen. Insbesondere können bestimmte Basisbetriebssystem APIs der C-Laufzeitbibliothek (CRT) und Microsoft.NET Framework konvertieren oder anderweitig bearbeiten Datums- und Zeitangaben. Dieser Artikel beschreibt einige allgemeine Konzepte mit Datums- und Zeitangaben beteiligt sind. Darüber hinaus erläutert den Effekt der Sommerzeit (DST) 2007 ändert sich für bestimmte Produkte und Technologie.

Weitere Informationen

Lagerung und Bearbeitung

Zeitstempel sind Werte, die eine Kombination aus Datum und Uhrzeit angeben. Programme, die normalerweise Timestamps behandeln müssen speichern die Zeitstempel in koordinierte Weltzeit (UTC). Der Vorteil von UTC ist UTC universal. UTC ist nicht lokalen Zeitzonen oder DST. UTC ist benutzerfreundlich weder für die meisten Benutzer. UTC als Standardlösung für Speicher ist, ist es keine gute Wahl für die Anzeige. Daher konvertieren die meisten UTC-Zeit in Ortszeit, bevor sie den Zeitstempel für den Benutzer anzuzeigen. Beispielsweise gilt Windows Explorer die Zeitzone und Sommerzeit-Einstellung UTC-Zeitstempel vor der Anzeige von Datums- und Zeitangaben für Dateien in einem Verzeichnis Windows NT-Dateisystem (NTFS).

Konvertierung von UTC-Zeit in Ortszeit sozusagen als zwei Offsets anwenden. Der erste ist der Zeitzonenoffset und der zweite den DST-Offset. Daher lokale Zeit ist UTC-Zeit plus einen Zeitzonenoffset sowie alle anwendbaren DST offset. Der Zeitzonenoffset ist relativ einfach. Der Computer für eine bestimmte Zeitzone konfiguriert und hat die Zeitzone UTC-Offset. Um zu bestimmen ist, ob ein DST Offset anzuwenden komplexer. Diese Aktivität basiert auf viele Regeln komplexe, dynamische.

Die komplexen DST-Regeln wurden mit Sommerzeit 2007 vor kurzem geändert. Ab 2007 hat den USA neue Start- und Enddaten neue für DST. Darüber hinaus ist es für andere Länder und Behörden regelmäßig die Start- und Enddaten für DST Zeitzonen ändern, die unter ihrer Kontrolle stehen. Der folgende Abschnitt beschreibt die Effekte der Änderung der Sommerzeit 2007 auf Developer-Produkte.

Weitere Informationen zu Sommerzeit 2007 finden Sie auf der folgenden Microsoft-Website:

Effekte auf Entwickler Sommerzeit 2007

Windows

Updates über Windows Update und Microsoft Update verfügbar sind, ermöglichen Windows ordnungsgemäß für Sommerzeit 2007 und die folgenden Jahre Änderungen. Nachdem die Updates angewendet wurden, berechnet Windows ordnungsgemäß aktuelle Offsets von UTC-Zeit in lokale Zeit DST der Computer durchläuft. Die Offsets sind die Offsets Basis APIs und networking zeitbezogenen APIs.

Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

942763 Dezember 2007 Kumulatives Zeitzonenupdate für Microsoft Windows Betriebssystemen

C-Laufzeitbibliothek (CRT)

CRT führt auch Übersetzungen Datum und Uhrzeit Übersetzungen. Daher muss die CRT ebenfalls aktualisiert werden, um neuen Regeln für die Sommerzeit 2007 enthalten. CRT führt eigene Zeit Verarbeitung nur, wenn die Umgebungsvariable TZ festgelegt oder zugrunde liegenden Zeitpunkt Betriebssystem-API-Aufruf fehlschlägt. Updates stehen für CRT-Monitore, die in jeder Version von Microsoft Visual Studio und für CRT-Monitore, die in Windows enthalten sind. Diese Updates ermöglichen CRT weiterhin DST Umwandlungen in USA Zeitzonen ordnungsgemäß zu behandeln.

.NET Framework

.NET Framework basiert auf dem zugrunde liegenden Betriebssystemaufrufe. Daher entspricht das Verhalten der.NET Framework-Zustand des zugrunde liegenden Betriebssystems. Keine separate Aktualisierung ist erforderlich.

Visual Studio .NET integriert Umgebungen (IDEs)

Visual Studio .NET IDEs enthalten, Version 2002, 2003 und 2005 von Microsoft Visual C++, Microsoft Visual C# und Microsoft Visual Basic. Diese Produkte sind betroffen, nur weil sie CRT enthalten. Keine IDE-spezifisches Update ist erforderlich.

Visual Studio 2005 Team Foundation Server

Visual Studio 2005 Team Foundation Server basiert auf dem zugrunde liegenden Betriebssystem für Datum und Uhrzeit konvertiert. Daher verhält sich Visual Studio 2005 Team Foundation Server genauso wie das Betriebssystem. Visual Studio 2005 Team Foundation Server verwendet Microsoft SQL Server, SQL Server Reporting Services und Windows SharePoint Services. Computer sollten die entsprechenden Updates für das Betriebssystem, SQL Server und Windows SharePoint Services aktualisiert werden. Alle relevanten Updates auf allen betroffenen Computern gleichzeitig anzuwenden. Keine separates Visual Studio 2005 Team Foundation Server-Update ist erforderlich.

Visual Studio 2005 Team System

Visual Studio 2005 Team System wird durch das Betriebssystem, durch Visual Studio 2005 Team Foundation Server und durch CRT betroffen. Keine separates Visual Studio 2005 Team System-Update ist erforderlich.

Visual SourceSafe

Weitere Informationen zu Visual SourceSafe DST Problemen in 2007 klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

931804 visual SourceSafe Sommerzeit Probleme in 2007

Visual Basic 6.0-Laufzeit

Die Visual Basic 6.0-Laufzeit ist nicht betroffen.

Visual C++ 6.0

Visual C++ 6.0 wird nicht mehr unterstützt.

Weitere Informationen finden Sie auf der folgenden Microsoft-Website:

Windows Software Development Kit (SDK) für Windows Vista



Dieses SDK enthält eine Version von CRT, die Änderung der Sommerzeit 2007 betroffen ist. Als Teil der Installation des SDK können Sie Visual Studio 2005 CRT auf Computern installieren, die nicht bereits diese Version der CRT installiert. Eine neuere Version der CRT bereits installiert ist, werden diese neuere Version von SDK-Installation nicht überschrieben. Wenn das SDK deinstalliert wird, bleibt auf dem Computer die neueste Version der CRT. Sie können Visual Studio 2005 CRT-Update entweder vor oder nach der Installation des SDK installieren.

Das Windows SDK für Windows Vista installiert auch eine Mergemodule (MSM-Dateien) für Visual Studio 2005 CRT für die Verteilung von CRT als Teil des benutzerdefinierten C++ Applications. Eine Anwendung, die die verteilbare CRT zum Installationsordner der Anwendung bereitgestellt wird, muss die aktualisierte CRT von Visual Studio 2005 CRT Update anstelle der CRT .msm-Dateien aus dem Windows SDK für Windows Vista bereitstellen. Eine Anwendung, die das verteilbare Visual Studio 2005 CRT-Update für Windows-Installationsordner bereitgestellt muss verteilbare Visual Studio 2005 CRT-Update auf den Computern anwenden.

Plattform-SDK für Microsoft Windows Server 2003 R2

Dieses SDK enthält eine Version von CRT, die Änderung der Sommerzeit 2007 betroffen ist. Kunden müssen folgen die Versionshinweise für dieses SDK und Visual Studio 2005 CRT-Updates erforderlich sind.

.NET Framework 2.0 SDK

Dieses SDK enthält eine Version von CRT, die Änderung der Sommerzeit 2007 betroffen ist. Als Teil der Installation des SDK können Sie Visual Studio 2005 CRT auf Computern installieren, die nicht bereits diese Version der CRT installiert. Eine neuere Version der CRT bereits installiert ist, werden diese neuere Version von SDK-Installation nicht überschrieben. Wenn das SDK deinstalliert wird, bleibt auf dem Computer die neueste Version der CRT. Sie können Visual Studio 2005 CRT-Update entweder vor oder nach der Installation des SDK installieren.

Konvertierung von Ortszeit in Windows

Konvertieren von ASP.NET-Anwendungen normalerweise UTC-Zeiten in Ortszeiten bevor sie Uhrzeit und Datum für den Benutzer anzuzeigen. Windows bietet mehrere APIs für Applikationen mit Zeitstempel bearbeiten.
  • Der GetSystemTime() und der GetSystemTimeAsFileTime() -Funktion erhalten die aktuelle UTC-Zeit in eine SYSTEMTIME-Struktur oder eine FILETIME-Struktur.
  • Die Funktion GetLocalTime() erhält die aktuelle Ortszeit in SYSTEMTIME-Struktur.
  • Die GetTimeZoneInformation()-Funktion Ruft eine TIME_ZONE_INFORMATION Struktur, die aktuelle Zeitzone und Sommerzeit-Einstellung für den Computer.
  • Marshallen zwischen SYSTEMTIME Strukturen und FILETIME, der bei SystemTimeToFileTime() und FileTimeToSystemTime() -Funktion.
  • Der FileTimeToLocalFileTime() und der LocalFileTimeToFileTime() -Funktion konvertieren und eine FILETIME-Struktur zwischen UTC und der Ortszeit mithilfe der aktuellen Zeitzone und Sommerzeit-Einstellung auf dem Computer übersetzen.
  • Der SystemTimeToTzSpecificLocalTime() und der TzSpecificTimeToSystemTime() -Funktion konvertieren UTC Timestamp in SYSTEMTIME-Struktur in eine lokale SYSTEMTIME-Struktur. Mithilfe dieser Funktionen eine TIME_ZONE_INFORMATION Struktur, die das Startdatum und das Enddatum für DST angibt. Standardmäßig werden aktuelle Sommerzeit verwendet, sofern eine solche Struktur.
  • Die Funktion NetRemoteTOD() Ruft die Zeit von einem Remoteserver mit der Servers und den Inhalt.
Hinweis Der FileTimeToLocalFileTime() und der LocalFileTimeToFileTime() Funktion führen die Konvertierung zwischen UTC-Zeit und lokaler Zeit mithilfe der aktuellen Zeitzoneninformationen und DST-Informationen. Diese Konvertierung tritt unabhängig von der Zeitstempel konvertiert wird.

Ein Beispiel für dieses Verhalten in Windows Explorer auf einem Computer in einer Zeitzone befindet, die DST verwendet folgendermaßen Sie vor:

Beachten Sie, dass diese Schritte erfordern, dass die Systemzeit zu ändern. Daher müssen Sie alle Programme wie Kalender, beenden, die auf diese Änderungen reagieren kann, bevor Sie diese Schritte.
  1. Ändern Sie das Datum auf dem Computer eine Sommerzeit. Legen Sie z. B. das Datum am 1. Juli 2006.
  2. Erstellen Sie eine neue Textdatei mit dem Namen Test.txt in einem NTFS-Verzeichnis auf dem gleichen Computer.
  3. Beachten Sie, dass der Zeitstempel der Datei in Windows Explorer folgendermaßen angezeigt wird:
    7/1/2006 3:37pm
  4. Ändern Sie das Datum auf dem Computer eine Sommerzeit. Beispielsweise stellen Sie das Datum 1. Februar 2007.
  5. Aktualisieren Sie das Windows Explorer-Fenster.
  6. Beachten Sie, dass der Zeitstempel der Datei in Windows Explorer folgendermaßen angezeigt wird:
    7/1/2006 2:37pm
Im vorangegangenen Beispiel wird der UTC-Zeitstempel der Datei nicht geändert. Die Regeln den Zeitstempel in einem Ortszeit konvertieren abhängig, das aktuelle Datum auf dem Computer. In Schritt 3 wurde ein DST Offset angewendet, da DST Bereich 1. Juli liegen. In Schritt 6 wurde kein DST Offset angewendet, da 1. Februar nicht innerhalb des Bereichs DST fällt. Dieses Verhalten tritt mit Zeitstempel Datei deterministisch Ortszeit und Ortszeit konvertiert werden kann.

Weitere Informationen finden Sie in diesem Blog:Die SystemTimeToTzSpecificLocalTime() -Methode und TzSpecificTimeToSystemTime() -Methode konvertieren mithilfe bereitgestellte TIME_ZONE_INFORMATION Struktur zwischen UTC und der Ortszeit. Sofern keine Zeitzoneninformationen diese Funktionen verwenden die Regeln der aktuellen Zeitzone und Sommerzeit bestimmen, ob ein DST Offset müssen dem Zeitstempel angewendet werden. Dies entspricht funktional dem Aufrufen der Methode GetTimeZoneInformation() TIME_ZONE_INFORMATION Struktur erhalten, die aktuell in Kraft ist.

TIME_ZONE_INFORMATION Struktur enthält das Startdatum und das Enddatum für die Sommerzeit. Daher TIME_ZONE_INFORMATION Struktur die aktuellen Zeitzonendaten verwendet, entstehen TIME_ZONE_INFORMATION Struktur historische Ungenauigkeit. Dieses Verhalten kann auftreten, wenn die aktuellen Zeitzonendaten und DST Informationen nicht den Zeitstempel wider, der konvertiert wird. Dieses Verhalten ist Sommerzeit 2007 betroffen, da die Regeln die Datumsangaben als DST startet und stoppt geändert wurden.

Historisch Konvertierung von Funktionen zu erhalten, muss eine Anwendung eine originalgetreue TIME_ZONE_INFORMATION Struktur bereitstellen, wenn die Anwendung diese Funktionen aufruft.

Dynamische Zeitzonen in Windows

Windows Vista führt dynamische DST-Zeitzonen. Dynamische DST bietet Unterstützung für Zeitzonen, dessen Grenzen für Sommerzeit Jahr ändern. Diese Regeln werden in der Registrierung gespeichert. Clientanwendungen können Regeln mithilfe der GetDynamicTimeZoneInformation() -Funktion Abfragen.

Dynamische Zeitzonen aktivieren einfacher Aktualisieren von Computern, insbesondere bei Gebietsschemas, die jährlichen DST Grenzen im Voraus bekannt sind. Weitere Informationen über die DYNAMIC_TIME_ZONE_INFORMATION-Struktur im Windows SDK für Vista finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:

Ortszeit konvertieren in der C-Laufzeitbibliothek (CRT)

CRT hat im Wesentlichen drei Modi, in denen sie Zeitstempel übersetzen:
  • Wenn Umgebungsvariable TZ nicht festgelegt ist, ruft die Windows-APIs CRT und in diesem Artikel beschriebenen Windows verhält.
  • Wenn die Umgebungsvariable TZ festgelegt ist, führt CRT eigene Umwandlungen, die auf diese Einstellung. CRT wird aktualisiert, so dass bei Konvertierung in diesem Szenario die neuen Regeln für die Sommerzeit 2007 berücksichtigt.
  • Wenn die Umgebungsvariable TZ nicht festgelegt, aber die zugrunde liegende Windows-APIs nicht, wird die CRT eigene Konvertierung mit einem Wert von PST8PDT für die Umgebungsvariable TZ.
CRT enthält seine eigene Logik zum Konvertieren von UTC in Ortszeit. Applikationen können Funktionen wie die Zeit UTC-Zeitstempel erhalten. Diese UTC-Zeitstempel werden Time_t Werte gespeichert. Konvertieren in die Ortszeit kann mit einer Funktion wie die localtime_s() ausgeführt werden. Die localtime_s() -Funktion füllt eine tm-Struktur, die in der Headerdatei Time.h definiert ist. Die tm-Struktur basiert auf der Zeitzone in die Umgebungsvariable TZ definiert und DST-Regeln, die zum Zeitpunkt der Zeitstempel gelten.

Hinweis Diese Konvertierung folgt bestimmten Regeln in den USA.

Bevor Updates der Sommerzeit 2007 behandelt CRT richtig aktuellen Zeitstempel in USA Zeitzonen. Nach Updates der Sommerzeit 2007 verarbeitet CRT vergangene und zukünftige US-amerikanischen Datumsangaben. Updates für CRT im Abschnitt "Informationsquellen" aufgeführt.

Ortszeit konvertieren in.NET Framework

.NET Framework enthält Klassen, die speichern und Konvertieren von Zeitstempeln. Dazu gehören die DateTime -Klasse, TimeZone -Klasse TimeSpan -Klasse und die DateTimeKind -Klasse. Wie bereits erwähnt hängt diese Klassen in erster Linie der zugrunde liegenden plattformimplementierung. Diese Klassen weisen dasselbe Verhalten wie das zugrunde liegende Betriebssystem-APIs.

Eine interessantes Verhalten von Klassen der.NET Framework-Datum und Zeitklassen ausgestellt bezieht sich auf Funktionen, die den Zeitstempel um einen angeforderten Betrag versetzt. Betrachten Sie beispielsweise die Funktion AddHours() , die AddMinutes() Funktion und AddSeconds() Funktion in die DateTime -Klasse. Diese Funktionen und entsprechend benannten Funktionen nur den Zeitstempel werden die angeforderten Betrag ohne Sommerzeit erhöht. Dieses Verhalten kann einfache arithmetische zugrunde liegenden UTC Timestamp betrachtet. Dies kann jedoch zu unerwarteten Ergebnissen führen, wenn dadurch wird den Zeitstempel in oder aus DST. Dieses Verhalten ist Sommerzeit 2007 ändert.

Empfehlung

Folgendes können Entwickler minimieren die Wirkung der Sommerzeit 2007 und Verbesserung der allgemeinen Datum und Zeit behandeln.
  • Sie sollten in der Nähe atomaren Installation der Sommerzeit 2007 Updates. Alle geplanten Sommerzeit 2007 Updates sollten so nah rechtzeitig miteinander wie möglich angewendet werden. Wenn ein Computer aktualisiert wurde versucht, wie SQL-Abfragen oder Webdienste mit einem Computer kommunizieren, die nicht aktualisiert wurden, können Fehler auftreten. Ebenso erfordert ein einzelnen Computer zwei oder mehr Updates wie Windows Update und Update CRT-Updates gleichzeitig anzuwenden.
  • UTC-Zeitstempel sind in der Vergangenheit korrekt. Es ist normalerweise die Konvertierung in die lokale Zeit, die meisten betrifft. Programme sollten immer UTC-Zeitstempel speichern. Konvertierung in Ortszeit für die Anzeige erfordern Zeitzone und Sommerzeit Informationen. Diese Informationen kann aus verschiedenen Quellen stammen:
    • Die Anwendung kann die aktuelle Zeitzone und Sommerzeit-Einstellung für die Konvertierung verwenden. Dies kann ein Fehler bei der Konvertierung führen, wäre die aktuelle Zeitzone und Sommerzeit-Einstellung nicht wirksam bei der Zeitstempel.
    • Die Anwendung kann die zuvor genaue Zeitzone und Sommerzeit Informationen neben der UTC-Zeitstempel speichern.
    • Wenn dynamische Zeitzonen verfügbar sind, können die Anwendung dynamische Zeitzonen bestimmen die Zeitzoneninformationen in bestimmten UTC Timestamp angewendet werden soll. Diese Option steht nur bei dynamischen Zeitzoneninformationen für einen bestimmten Zeitstempel und einer bestimmten Zeitzone.
    • Die Anwendung kann einen lokalen Zeitstempel und der UTC-Zeitstempel speichern. Diese Methode verhindert künftige Konvertierung.
  • Die Kommunikation zwischen Computern mit Zeitstempel verwenden UTC-Zeitstempel. Dadurch implizit beide Computer den gleiche Kontextinformationen für UTC.
  • Wenn eine Anwendung Daten verarbeitet, sollten Sie mit vorsichtig behandelt die Daten testen. Datum ohne Zeitangabe angezeigt werden normalerweise als Zeitstempel von 00:00 am Stichtag gespeichert. Daher möglich Fehler aus nacheinander in der Stunde der Zeitstempel auf einen off-by-One das effektive Datum Zeit um 11:00 Uhr am Vortag verschoben.

Referenzen

Weitere Informationen über das Portal Sommerzeit 2007 Microsoft finden Sie auf der folgenden Microsoft-Website:http://support.microsoft.com/gp/cp_dstfür Weitere Informationen klicken Sie auf die folgenden Artikelnummern klicken, um die Artikel der Microsoft Knowledge Base:

942763 Dezember 2007 Kumulatives Zeitzonenupdate für Microsoft Windows Betriebssystemen

931975 wie ändert auf Sommerzeit 2007 SQL Server 2005 und SQL Server 2000 vorbereiten

931804 visual SourceSafe Sommerzeit Probleme in 2007

Weitere Informationen finden Sie auf folgenden Websites von Microsoft Developer Network (MSDN):Sommerzeit 2007 Updates der C-Laufzeitbibliothek (CRT) zu erhalten, klicken Sie auf die folgenden Artikelnummern klicken, um die Artikel der Microsoft Knowledge Base:
932305 Update: Visual C++ .NET 2002 C Runtime Sommerzeit 2007-Update TZ-Umgebung Variable Problem

932304 Update: Visual C++ .NET 2002 Service Pack 1 C Runtime Sommerzeit 2007-Update TZ-Umgebung Variable Problem

932299 Update: Visual C++ .NET 2003 C Runtime Sommerzeit 2007-Update TZ-Umgebung Variable Problem

932298 Update: Visual C++ .NET 2003 Service Pack 1 C Runtime Sommerzeit 2007-Update TZ-Umgebung Variable Problem

932392 Update: Visual C++ .NET 2005 C Runtime Sommerzeit 2007-Update für die Umgebungsvariable TZ

932391 Update: Visual C++ .NET 2005 Service Pack 1 C Runtime Sommerzeit 2007-Update für die Umgebungsvariable TZ

932590 beheben: Windows-basierte Anwendung, die Umgebungsvariable TZ verwenden möglicherweise nicht erwartungsgemäß durch Änderung der Sommerzeit

Eigenschaften

Artikelnummer: 932955 – Letzte Überarbeitung: 14.01.2017 – Revision: 1

Feedback