Windows-Apps
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

DateTime-Struktur

 

Stellt einen Zeitpunkt dar, der normalerweise durch Datum und Uhrzeit dargestellt wird.

Informationen zum Durchsuchen des .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
public struct DateTime : IComparable, IFormattable, IConvertible, 
	ISerializable, IComparable<DateTime>, IEquatable<DateTime>

NameBeschreibung
System_CAPS_pubmethodDateTime(Int32, Int32, Int32)

Initialisiert eine neue Instanz der DateTime-Struktur mit dem angegebenen Jahr, Monat und Tag.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Calendar)

Initialisiert eine neue Instanz der DateTime-Struktur mit dem angegebenen Jahr, Monat und Tag für den angegebenen Kalender.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute und Sekunde.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute und Sekunde für den angegebenen Kalender.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde und koordinierte Weltzeit (Coordinated Universal Time, UTC) oder Ortszeit.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde für den angegebenen Kalender.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde und koordinierte Weltzeit (Coordinated Universal Time, UTC) oder Ortszeit für den angegebenen Kalender.

System_CAPS_pubmethodDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Initialisiert eine neue Instanz der DateTime-Struktur mit den angegebenen Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde und koordinierte Weltzeit (Coordinated Universal Time, UTC) oder Ortszeit.

System_CAPS_pubmethodDateTime(Int64)

Initialisiert eine neue Instanz der DateTime-Struktur mit einer angegebenen Anzahl von Ticks.

System_CAPS_pubmethodDateTime(Int64, DateTimeKind)

Initialisiert eine neue Instanz der DateTime-Struktur mit einer angegebenen Anzahl von Ticks und koordinierter Weltzeit (UTC) oder lokaler Zeit.

NameBeschreibung
System_CAPS_pubpropertyDate

Ruft die Datumskomponente dieser Instanz ab.

System_CAPS_pubpropertyDay

Ruft den Tag des Monats ab, der durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyDayOfWeek

Ruft den Wochentag ab, der durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyDayOfYear

Ruft den Tag des Jahres ab, der durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyHour

Ruft die Komponente für die Stunden des Datums ab, das durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyKind

Ruft einen Wert ab, der angibt, ob die durch diese Instanz dargestellte Zeit auf lokaler Zeit, koordinierter Weltzeit (UTC) oder keinem von beiden basiert.

System_CAPS_pubpropertyMillisecond

Ruft die Komponente für die Millisekunden des Datums ab, das durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyMinute

Ruft die Komponente für die Minuten des Datums ab, das durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyMonth

Ruft die Komponente für den Monat des Datums ab, das durch diese Instanz dargestellt wird.

System_CAPS_pubpropertySystem_CAPS_staticNow

Ruft ein DateTime-Objekt ab, das auf das aktuelle Datum und die aktuelle Zeit auf dem lokalen Rechner als Ortszeit festgelegt ist.

System_CAPS_pubpropertySecond

Ruft die Komponente für die Sekunden des Datums ab, das durch diese Instanz dargestellt wird.

System_CAPS_pubpropertyTicks

Ruft die Anzahl der Ticks ab, die Datum und Uhrzeit dieser Instanz darstellen.

System_CAPS_pubpropertyTimeOfDay

Ruft die Uhrzeit für diese Instanz ab.

System_CAPS_pubpropertySystem_CAPS_staticToday

Ruft das aktuelle Datum ab.

System_CAPS_pubpropertySystem_CAPS_staticUtcNow

Ruft ein DateTime-Objekt ab, das auf die aktuelle Datums- und Uhrzeitangabe auf diesem Rechner als koordinierte Weltzeit (UTC) festgelegt ist.

System_CAPS_pubpropertyYear

Ruft die Komponente für das Jahr des Datums ab, das durch diese Instanz dargestellt wird.

NameBeschreibung
System_CAPS_pubmethodAdd(TimeSpan)

Gibt einen neuen DateTime-Wert zurück, der den Wert des angegebenen TimeSpan-Werts zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddDays(Double)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Tagen zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddHours(Double)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Stunden zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddMilliseconds(Double)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Millisekunden zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddMinutes(Double)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Minuten zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddMonths(Int32)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Monaten zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddSeconds(Double)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Sekunden zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddTicks(Int64)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Ticks zum Wert dieser Instanz addiert.

System_CAPS_pubmethodAddYears(Int32)

Gibt einen neuen DateTime-Wert zurück, der die angegebene Anzahl von Jahren zum Wert dieser Instanz addiert.

System_CAPS_pubmethodSystem_CAPS_staticCompare(DateTime, DateTime)

Vergleicht zwei Instanzen von DateTime und gibt eine ganze Zahl zurück, die angibt, ob die erste Instanz früher oder später als die zweite Instanz ist oder ob sie mit dieser identisch ist.

System_CAPS_pubmethodCompareTo(DateTime)

Vergleicht den Wert dieser Instanz mit einem angegebenen DateTime-Wert und gibt eine Ganzzahl zurück, die angibt, ob diese Instanz vor oder nach dem angegebenen DateTime-Wert liegt oder diesem entspricht.

System_CAPS_pubmethodCompareTo(Object)

Vergleicht den Wert dieser Instanz mit einem angegebenen Objekt, das einen angegebenen DateTime-Wert enthält, und gibt eine Ganzzahl zurück, die angibt, ob diese Instanz vor oder nach dem angegebenen DateTime-Wert liegt oder diesem entspricht.

System_CAPS_pubmethodSystem_CAPS_staticDaysInMonth(Int32, Int32)

Gibt die Anzahl der Tage im angegebenen Monat und Jahr zurück.

System_CAPS_pubmethodEquals(DateTime)

Gibt einen Wert zurück, der angibt, ob der Wert dieser Instanz gleich dem Wert der angegebenen DateTime-Instanz ist.

System_CAPS_pubmethodSystem_CAPS_staticEquals(DateTime, DateTime)

Gibt einen Wert zurück, der angibt, ob zwei DateTime-Instanzen denselben Datum- und Zeitwert besitzen.

System_CAPS_pubmethodEquals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Überschreibt ValueType.Equals(Object).)

System_CAPS_pubmethodSystem_CAPS_staticFromBinary(Int64)

Deserialisiert einen 64-Bit-Binärwert und erstellt ein ursprüngliches serialisiertes DateTime-Objekt neu.

System_CAPS_pubmethodSystem_CAPS_staticFromFileTime(Int64)

Konvertiert die angegebene Windows-Dateizeit in eine entsprechende Ortszeit.

System_CAPS_pubmethodSystem_CAPS_staticFromFileTimeUtc(Int64)

Konvertiert die angegebene Windows-Dateizeit in eine entsprechende UTC-Zeit.

System_CAPS_pubmethodSystem_CAPS_staticFromOADate(Double)

Gibt eine DateTime zurück, die dem angegebenen Datum für die OLE-Automatisierung entspricht.

System_CAPS_pubmethodGetDateTimeFormats()

Konvertiert den Wert dieser Instanz in alle Zeichenfolgendarstellungen, die von den Standardformatbezeichnern für Datum und Uhrzeit unterstützt werden.

System_CAPS_pubmethodGetDateTimeFormats(Char)

Konvertiert den Wert dieser Instanz in alle Zeichenfolgendarstellungen, die von den angegebenen Standardformatbezeichnern für Datum und Uhrzeit unterstützt werden.

System_CAPS_pubmethodGetDateTimeFormats(Char, IFormatProvider)

Konvertiert den Wert dieser Instanz in alle Zeichenfolgenentsprechungen, die von dem angegebenen Standardformatbezeichner für Datum und Uhrzeit und den angegebenen kulturspezifischen Formatierungsinformationen unterstützt werden.

System_CAPS_pubmethodGetDateTimeFormats(IFormatProvider)

Konvertiert den Wert dieser Instanz in alle Zeichenfolgendarstellungen, die von den Standardformatbezeichnern für Datum und Uhrzeit und den angegebenen kulturspezifischen Formatierungsinformationen unterstützt werden.

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Überschreibt ValueType.GetHashCode().)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodGetTypeCode()

Gibt den TypeCode für den Werttyp DateTime zurück.

System_CAPS_pubmethodIsDaylightSavingTime()

Gibt an, ob sich diese Instanz von DateTime im Sommerzeitbereich für die aktuelle Zeitzone befindet.

System_CAPS_pubmethodSystem_CAPS_staticIsLeapYear(Int32)

Gibt eine Angabe darüber zurück, ob das angegebene Jahr ein Schaltjahr ist.

System_CAPS_pubmethodSystem_CAPS_staticParse(String)

Konvertiert die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in die entsprechende DateTime.

System_CAPS_pubmethodSystem_CAPS_staticParse(String, IFormatProvider)

Konvertiert die Zeichenfolgendarstellungen einer Datums- und Uhrzeitangabe unter Verwendung der kulturspezifischen Formatierungsinformationen in die entsprechende DateTime.

System_CAPS_pubmethodSystem_CAPS_staticParse(String, IFormatProvider, DateTimeStyles)

Konvertiert die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe unter Verwendung der kulturspezifischen Formatierungsinformationen und Formatierungsstil in die entsprechende DateTime.

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String, IFormatProvider)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende DateTime. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen.

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String, IFormatProvider, DateTimeStyles)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende DateTime. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String[], IFormatProvider, DateTimeStyles)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTime-Entsprechung. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.

System_CAPS_pubmethodSystem_CAPS_staticSpecifyKind(DateTime, DateTimeKind)

Erstellt ein neues DateTime-Objekt, das über die gleiche Anzahl von Ticks wie die angegebene DateTime verfügt, aber entsprechend dem DateTimeKind-Wert in Ortszeit, koordinierter Weltzeit (Coordinated Universal Time, UTC) oder keinem von beiden angegeben ist.

System_CAPS_pubmethodSubtract(DateTime)

Subtrahiert die angegebene Datums- und Uhrzeitangabe von dieser Instanz.

System_CAPS_pubmethodSubtract(TimeSpan)

Subtrahiert die angegebene Dauer von dieser Instanz.

System_CAPS_pubmethodToBinary()

Serialisiert das aktuelle DateTime-Objekt in einen 64-Bit-Binärwert, der dann zum erneuten Erstellen des DateTime-Objekts verwendet werden kann.

System_CAPS_pubmethodToFileTime()

Konvertiert den Wert des aktuellen DateTime-Objekts in eine Windows-Dateizeit.

System_CAPS_pubmethodToFileTimeUtc()

Konvertiert den Wert des aktuellen DateTime-Objekts in eine Windows-Dateizeit.

System_CAPS_pubmethodToLocalTime()

Konvertiert den Wert des aktuellen DateTime-Objekts in die Ortszeit.

System_CAPS_pubmethodToLongDateString()

Konvertiert den Wert des aktuellen DateTime-Objekts in die entsprechende Zeichenfolgendarstellung im langen Datumsformat.

System_CAPS_pubmethodToLongTimeString()

Konvertiert den Wert des aktuellen DateTime-Objekts in die entsprechende Zeichenfolgendarstellung im langen Zeitformat.

System_CAPS_pubmethodToOADate()

Konvertiert den Wert dieser Instanz in das entsprechende Datum für OLE-Automatisierung.

System_CAPS_pubmethodToShortDateString()

Konvertiert den Wert des aktuellen DateTime-Objekts in die entsprechende Zeichenfolgendarstellung im kurzen Datumsformat.

System_CAPS_pubmethodToShortTimeString()

Konvertiert den Wert des aktuellen DateTime-Objekts in die entsprechende Zeichenfolgendarstellung im kurzen Zeitformat.

System_CAPS_pubmethodToString()

Konvertiert den Wert des aktuellen DateTime-Objekts unter Verwendung der Formatierungskonventionen der aktuellen Kultur in die entsprechende Zeichenfolgendarstellung.(Überschreibt ValueType.ToString().)

System_CAPS_pubmethodToString(IFormatProvider)

Konvertiert den Wert des aktuellen DateTime-Objekts unter Verwendung der angegebenen kulturspezifischen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.

System_CAPS_pubmethodToString(String)

Konvertiert den Wert des aktuellen DateTime-Objekts unter Verwendung des angegebenen Formats und der Formatierungskonventionen der aktuellen Kultur in die entsprechende Zeichenfolgendarstellung.

System_CAPS_pubmethodToString(String, IFormatProvider)

Konvertiert den Wert des aktuellen DateTime-Objekts unter Verwendung des angegebenen Formats sowie der kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.

System_CAPS_pubmethodToUniversalTime()

Konvertiert den Wert des aktuellen DateTime-Objekts in koordinierte Weltzeit (UTC).

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, DateTime)

Konvertiert die angegebene Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in deren DateTime-Entsprechung und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich ausgeführt wurde.

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Konvertiert die angegebene Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe unter Verwendung der angegebenen kulturspezifischen Formatierungsinformationen und des Formatierungsstils in die entsprechende DateTime und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich abgeschlossen wurde.

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende DateTime. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen. Die Methode gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich abgeschlossen wurde.

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTime-Entsprechung. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate genau entsprechen. Die Methode gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich abgeschlossen wurde.

NameBeschreibung
System_CAPS_pubfieldSystem_CAPS_staticMaxValue

Stellt den größtmöglichen Wert von DateTime dar. Dieses Feld ist schreibgeschützt.

System_CAPS_pubfieldSystem_CAPS_staticMinValue

Stellt den kleinstmöglichen Wert von DateTime dar. Dieses Feld ist schreibgeschützt.

NameBeschreibung
System_CAPS_puboperatorSystem_CAPS_staticAddition(DateTime, TimeSpan)

Addiert ein angegebenes Zeitintervall zu einer Datums- und Uhrzeitangabe und gibt eine neue Datums- und Uhrzeitangabe zurück.

System_CAPS_puboperatorSystem_CAPS_staticEquality(DateTime, DateTime)

Bestimmt, ob zwei angegebene Instanzen von DateTime gleich sind.

System_CAPS_puboperatorSystem_CAPS_staticGreaterThan(DateTime, DateTime)

Bestimmt, ob eine angegebene DateTime später als eine andere angegebene DateTime ist.

System_CAPS_puboperatorSystem_CAPS_staticGreaterThanOrEqual(DateTime, DateTime)

Bestimmt, ob eine vorliegende DateTime-Angabe eine Datums- und Uhrzeitangabe darstellt, die gleichzeitig oder später als eine andere vorliegende DateTime-Angabe ist.

System_CAPS_puboperatorSystem_CAPS_staticInequality(DateTime, DateTime)

Bestimmt, ob zwei angegebene Instanzen von DateTime nicht gleich sind.

System_CAPS_puboperatorSystem_CAPS_staticLessThan(DateTime, DateTime)

Bestimmt, ob eine angegebene DateTime früher als eine andere angegebene DateTime ist.

System_CAPS_puboperatorSystem_CAPS_staticLessThanOrEqual(DateTime, DateTime)

Bestimmt, ob eine vorliegende DateTime-Angabe eine Datums- und Uhrzeitangabe darstellt, die gleichzeitig oder früher als eine andere vorliegende DateTime-Angabe ist.

System_CAPS_puboperatorSystem_CAPS_staticSubtraction(DateTime, DateTime)

Subtrahiert eine Datums- und Uhrzeitangabe von einer anderen Datums- und Uhrzeitangabe und gibt ein Zeitintervall zurück.

System_CAPS_puboperatorSystem_CAPS_staticSubtraction(DateTime, TimeSpan)

Subtrahiert ein angegebenes Zeitintervall von einer Datums- und Uhrzeitangabe und gibt eine neue Datums- und Uhrzeitangabe zurück.

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToBoolean(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToByte(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToChar(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDateTime(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt das aktuelle DateTime-Objekt zurück.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDecimal(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDouble(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt16(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt32(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt64(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSByte(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSingle(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToType(Type, IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Konvertiert das aktuelle DateTime-Objekt in ein Objekt vom angegebenen Typ.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt16(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt32(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt64(IFormatProvider)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.

System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt ein SerializationInfo-Objekt mit den für das Serialisieren des aktuellen DateTime-Objekts erforderlichen Daten.

System_CAPS_noteHinweis

Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source. Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions.

Die DateTime Werttyp stellt Datumsangaben und Zeiten mit Werten im Bereich von 00:00:00 (Mitternacht), 1. Januar 0001 nach Christus (Common Era) und 11:59:59, 31. Dezember 9999 n. Chr. (C.E.) im gregorianischen Kalender.

Zeitwerte werden in so genannten 100-Nanosekunden-Ticks gemessen und ein bestimmtes Datum wird die Anzahl der Ticks seit 12:00 Uhr, 1. Januar 0001 n. Chr. (C.E.) in der GregorianCalendar Kalender (mit Ausnahme von Ticks, die von Schaltsekunden hinzugefügt werden würde). Ein Tickswert von 31241376000000000 stellt z. B. das Datum, Freitag, 01 Januar 0100, 00:00:00 Uhr. Ein DateTime Wert wird immer im Kontext einer expliziten oder Standardkalender angegeben.

System_CAPS_noteHinweis

Wenn Sie mit einem Tickswert arbeiten werden, dass Sie in ein anderes Zeitintervall, z. B. Minuten oder Sekunden konvertieren möchten, verwenden Sie die TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, oder TimeSpan.TicksPerMillisecond Konstante zum Durchführen der Konvertierung. Z. B. die Anzahl der Sekunden hinzufügen dargestellt durch eine angegebene Anzahl von Ticks zum der Second -Komponente eine DateTime Wert können Sie den Ausdruck dateValue.Second + nTicks/Timespan.TicksPerSecond.

In diesem Abschnitt

Instanziieren eines "DateTime"-Objekts
DateTime-Werte und deren zeichenfolgendarstellungen
Konvertieren von Zeichenfolgen in DateTime-Werte
Version-Überlegungen
DateTime-Werte
"DateTime"-Vorgänge
"DateTime" Auflösung
Im Vergleich mit "DateTime" TimeSpan
DateTime-Werte und Kalender
Beibehalten von DateTime-Werte
COM-Interop-Überlegungen

Sie können ein neues erstellen DateTime Wert in einem der folgenden Methoden:

  • Durch das Aufrufen einer der Überladungen der der DateTime Konstruktor, mit denen Sie bestimmte Elemente der Wert für Datum und Uhrzeit (z. B. dem Jahr, Monat und Tag oder die Anzahl der Ticks) angeben können. Die folgende Anweisung veranschaulicht einen Aufruf in eines der DateTime Konstruktoren So erstellen Sie ein Datum mit bestimmten Jahr, Monat, Tag, Stunde, Minute und Sekunde.

    DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
    
  • Mithilfe von Compiler-spezifische Syntax zum Deklarieren von Datums-und Uhrzeitwerte. Z. B. die folgende Visual Basic-Anweisung initialisiert eine neue DateTime Wert.

    Dim date1 As Date = #5/1/2008 8:30:52AM#
    
  • Durch Zuweisen der DateTime einen Datum und Uhrzeit-Wert einer Eigenschaft oder Methode zurückgegebenes Objekt. Im folgende Beispiel weist das aktuelle Datum und Zeit, die aktuelle Coordinated Universal Time (UTC) Datum und Zeit und dem aktuellen Datum drei neue DateTime Variablen.

    DateTime date1 = DateTime.Now;
    DateTime date2 = DateTime.UtcNow;
    DateTime date3 = DateTime.Today;
    
  • Durch die Analyse der Zeichenfolgendarstellung eines Werts für Datum und Uhrzeit. Die Parse, ParseExact, TryParse, und TryParseExact alle Methoden Konvertieren einer Zeichenfolge in ihren entsprechenden Datums- und Uhrzeitwert. Im folgenden Beispiel wird die Parse Methode, um eine Zeichenfolge zu analysieren und konvertieren Sie sie in einem DateTime Wert.

    string dateString = "5/1/2008 8:30:52 AM";
    DateTime date1 = DateTime.Parse(dateString, 
                              System.Globalization.CultureInfo.InvariantCulture); 
    

    Beachten Sie, dass die TryParse und TryParseExact Methoden angeben, ob eine bestimmte Zeichenfolge eine gültige Darstellung des enthält eine DateTime Wert zusätzlich zum Ausführen der Konvertierung.

  • Durch Aufrufen der DateTime -Struktur impliziten Standardkonstruktor. (Ausführliche Informationen zu den impliziten Standardkonstruktor eines Werttyps, finden Sie unter Werttypen (C#-Referenz).) Eine ungefähre Entsprechung für Compiler, die diese zu unterstützen, bei der Deklaration einer DateTime Wert ohne explizit einer Datums- und Uhrzeitangabe zugewiesen wird. Das folgende Beispiel veranschaulicht einen Aufruf der DateTime impliziten Standardkonstruktor in c# und Visual Basic als auch eine DateTime Variablendeklaration bei der keine Zuweisung in Visual Basic.

    DateTime dat1 = new DateTime();
    // The following method call displays 1/1/0001 12:00:00 AM.
    Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
    // The following method call displays True.
    Console.WriteLine(dat1.Equals(DateTime.MinValue));
    

Intern werden alle DateTime Werte dargestellt werden, als die Anzahl der Ticks (die Anzahl der 100-Nanosekunden-Intervallen), die seit 12:00:00 Mitternacht, 1. Januar 0001 vergangen sind. Die tatsächlichen DateTime Wert ist unabhängig von der Methode, die in der dieser Wert wird angezeigt, wenn in einem Element der Benutzeroberfläche oder beim Schreiben in eine Datei angezeigt. Die Darstellung einer DateTime Wert ist das Ergebnis eines Formatierungsvorgangs. Formatieren von versteht man einen Wert in seine Zeichenfolgendarstellung konvertiert.

Da die Darstellung von Datums-und Uhrzeitwerte hängt von Faktoren wie der Kultur, internationalen Normen anwendungsanforderungen und persönlichen Anforderungen ab, wird die DateTime Struktur bietet ein hohes Maß an Flexibilität bei der Formatierung von Datum und Uhrzeit-Werte über Überladungen der seine ToString Methode. Die Standardeinstellung DateTime.ToString() Methode gibt die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe-Wert, mit der aktuellen Kultur kurzes Datum und langes Zeitmuster. Im folgenden Beispiel wird die Standardeinstellung DateTime.ToString() -Methode zeigt das Datum und die Uhrzeit mit dem kurzen Datumsformat und langes Zeitmuster für En-US-Kultur, die aktuelle Kultur auf dem Computer, auf dem das Beispiel ausgeführt wurde.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM

Die DateTime.ToString(IFormatProvider) Methode gibt die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe-Wert, mit dem kurzes Datum und einer bestimmten Kultur langes Zeitmuster. Im folgenden Beispiel wird die DateTime.ToString(IFormatProvider) zeigt das Datum und Uhrzeit, mit dem kurzen Datumsformat und langes Zeitmuster für die Kultur fr-FR-Methode.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00

Die DateTime.ToString(String) Methode gibt eine Zeichenfolgendarstellung von Datum und Uhrzeit in einem Format, die durch eine standardmäßige oder benutzerdefinierte Formatbezeichner definiert und die Verwendung der Formatierungskonventionen der aktuellen Kultur zurück. Im folgenden Beispiel wird die DateTime.ToString(String) Kultur Methode, um das vollständige Datums- und Uhrzeitmuster für En-US anzuzeigen, die die aktuelle Kultur auf dem Computer, auf dem das Beispiel ausgeführt wurde.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F"));
// Displays Saturday, March 01, 2008 7:00:00 AM

Die DateTime.ToString(String, IFormatProvider) Methode gibt eine Zeichenfolgendarstellung von Datum und Uhrzeit in einem Format, die von einem bestimmten Formatbezeichner definiert und Verwendung der Formatierungskonventionen einer bestimmten Kultur zurück. Im folgenden Beispiel wird die DateTime.ToString(String, IFormatProvider) Methode, um das vollständige Datums- und Uhrzeitmuster für die Kultur fr-FR anzuzeigen.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00

Weitere Informationen zur Formatierung DateTime -Werte finden Sie in Standard-Formatzeichenfolgen für Datum und Uhrzeit und Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit.

Analysieren werden, konvertiert die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in einem DateTime Wert. Datum- und Uhrzeitzeichenfolgen werden in der Regel zwei verschiedene Verwendungen in Anwendungen haben:

  • Sie darstellen einer Datums- und Uhrzeitangabe dauert, die die verschiedenen Formen vorliegen, und berücksichtigt die Konventionen der aktuellen Kultur oder einer bestimmten Kultur. Beispielsweise kann eine Anwendung ermöglichen einem Benutzer, dessen aktuelle Kultur En-US, um einen Date-Wert als "12/15/2013" oder "15. Dezember 2013" eingegeben wird, und ermöglichen einem Benutzer, dessen aktuelle Kultur En-GB, um einen Date-Wert als "12/15/2013" oder "15 Dezember 2013" eingegeben wird.

  • Sie darstellen einer Datums- und Uhrzeitangabe in einem vordefinierten Format. Beispielsweise kann eine Anwendung ein Datum als "20130103" serialisiert werden unabhängig von der Kultur auf dem die app ausgeführt wird, oder dass ein Datum im kurzen Datumsformat der aktuellen Kultur eingegeben werden müssen.

Können Sie die Parse oder TryParse Methode zum Konvertieren einer Zeichenfolge, die eines der allgemeinen Datums- und Zeitformate verwendet, die für eine Kultur widerspiegeln möglicherweise eine DateTime Wert. Das folgende Beispiel zeigt, wie Sie verwenden können TryParse Datumszeichenfolgen in einer Reihe verschiedener kulturspezifische Formate zum Konvertieren einer DateTime Wert. Es ändert die aktuelle Kultur auf Englisch (Großbritannien) und in Aufrufen der GetDateTimeFormats() Methode zum Generieren der ein Array von Zeichenfolgen für Datum und Uhrzeit. Es übergibt dann jedes Element im Array der TryParse Methode. Die Ausgabe des Beispiels zeigt, dass die Analysemethode erfolgreich einzelnen kulturabhängige Datums- und Uhrzeitzeichenfolgen konvertieren konnte.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

      DateTime date1 = new DateTime(2013, 6, 1, 12, 32, 30);
      List<string> badFormats = new List<String>();

      Console.WriteLine("{0,-37} {1,-19}\n", "Date String", "Date");
      foreach (var dateString in date1.GetDateTimeFormats()) {
         DateTime parsedDate;
         if (DateTime.TryParse(dateString, out parsedDate))
            Console.WriteLine("{0,-37} {1,-19}", dateString, DateTime.Parse(dateString));
         else
            badFormats.Add(dateString);
      } 

      // Display strings that could not be parsed.
      if (badFormats.Count > 0) {
         Console.WriteLine("\nStrings that could not be parsed: ");
         foreach (var badFormat in badFormats)
            Console.WriteLine("   {0}", badFormat);         
      }
   }
}
// The example displays the following output:
//       Date String                           Date               
//       
//       01/06/2013                            01/06/2013 00:00:00
//       01/06/13                              01/06/2013 00:00:00
//       1/6/13                                01/06/2013 00:00:00
//       1.6.13                                01/06/2013 00:00:00
//       2013-06-01                            01/06/2013 00:00:00
//       01 June 2013                          01/06/2013 00:00:00
//       1 June 2013                           01/06/2013 00:00:00
//       01 June 2013 12:32                    01/06/2013 12:32:00
//       01 June 2013 12:32                    01/06/2013 12:32:00
//       01 June 2013 12:32 PM                 01/06/2013 12:32:00
//       01 June 2013 12:32 PM                 01/06/2013 12:32:00
//       1 June 2013 12:32                     01/06/2013 12:32:00
//       1 June 2013 12:32                     01/06/2013 12:32:00
//       1 June 2013 12:32 PM                  01/06/2013 12:32:00
//       1 June 2013 12:32 PM                  01/06/2013 12:32:00
//       01 June 2013 12:32:30                 01/06/2013 12:32:30
//       01 June 2013 12:32:30                 01/06/2013 12:32:30
//       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
//       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
//       1 June 2013 12:32:30                  01/06/2013 12:32:30
//       1 June 2013 12:32:30                  01/06/2013 12:32:30
//       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
//       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
//       01/06/2013 12:32                      01/06/2013 12:32:00
//       01/06/2013 12:32                      01/06/2013 12:32:00
//       01/06/2013 12:32 PM                   01/06/2013 12:32:00
//       01/06/2013 12:32 PM                   01/06/2013 12:32:00
//       01/06/13 12:32                        01/06/2013 12:32:00
//       01/06/13 12:32                        01/06/2013 12:32:00
//       01/06/13 12:32 PM                     01/06/2013 12:32:00
//       01/06/13 12:32 PM                     01/06/2013 12:32:00
//       1/6/13 12:32                          01/06/2013 12:32:00
//       1/6/13 12:32                          01/06/2013 12:32:00
//       1/6/13 12:32 PM                       01/06/2013 12:32:00
//       1/6/13 12:32 PM                       01/06/2013 12:32:00
//       1.6.13 12:32                          01/06/2013 12:32:00
//       1.6.13 12:32                          01/06/2013 12:32:00
//       1.6.13 12:32 PM                       01/06/2013 12:32:00
//       1.6.13 12:32 PM                       01/06/2013 12:32:00
//       2013-06-01 12:32                      01/06/2013 12:32:00
//       2013-06-01 12:32                      01/06/2013 12:32:00
//       2013-06-01 12:32 PM                   01/06/2013 12:32:00
//       2013-06-01 12:32 PM                   01/06/2013 12:32:00
//       01/06/2013 12:32:30                   01/06/2013 12:32:30
//       01/06/2013 12:32:30                   01/06/2013 12:32:30
//       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
//       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
//       01/06/13 12:32:30                     01/06/2013 12:32:30
//       01/06/13 12:32:30                     01/06/2013 12:32:30
//       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
//       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
//       1/6/13 12:32:30                       01/06/2013 12:32:30
//       1/6/13 12:32:30                       01/06/2013 12:32:30
//       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
//       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
//       1.6.13 12:32:30                       01/06/2013 12:32:30
//       1.6.13 12:32:30                       01/06/2013 12:32:30
//       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
//       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
//       2013-06-01 12:32:30                   01/06/2013 12:32:30
//       2013-06-01 12:32:30                   01/06/2013 12:32:30
//       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
//       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
//       01 June                               01/06/2013 00:00:00
//       01 June                               01/06/2013 00:00:00
//       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
//       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
//       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
//       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
//       2013-06-01T12:32:30                   01/06/2013 12:32:30
//       12:32                                 22/04/2013 12:32:00
//       12:32                                 22/04/2013 12:32:00
//       12:32 PM                              22/04/2013 12:32:00
//       12:32 PM                              22/04/2013 12:32:00
//       12:32:30                              22/04/2013 12:32:30
//       12:32:30                              22/04/2013 12:32:30
//       12:32:30 PM                           22/04/2013 12:32:30
//       12:32:30 PM                           22/04/2013 12:32:30
//       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
//       01 June 2013 19:32:30                 01/06/2013 19:32:30
//       01 June 2013 19:32:30                 01/06/2013 19:32:30
//       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
//       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
//       1 June 2013 19:32:30                  01/06/2013 19:32:30
//       1 June 2013 19:32:30                  01/06/2013 19:32:30
//       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
//       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
//       June 2013                             01/06/2013 00:00:00
//       June 2013                             01/06/2013 00:00:00

Sie können die TryParse und TryParseExact Methoden, um ein Datum und Uhrzeit-Zeichenfolge zu konvertieren, die mit einem bestimmten Format oder Formate, die übereinstimmen müssen eine DateTime Wert. Geben Sie die erforderlichen Format oder die Formate als Parameter für die Analyse Methodby anhand eines oder mehrerer oder Formatzeichenfolgen für Datum und Uhrzeit an. Im folgenden Beispiel wird die TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) Methode, um Zeichenfolgen zu konvertieren, die entweder in einem "JJJJMMTT" Format "oder" Format "HHmmss", sein müssen DateTime Werte.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats = { "yyyyMMdd", "HHmmss" };
      string[] dateStrings = { "20130816", "20131608", "  20130816   ", 
                               "115216", "521116", "  115216  " };
      DateTime parsedDate;

      foreach (var dateString in dateStrings) {
         if (DateTime.TryParseExact(dateString, formats, null, 
                                    DateTimeStyles.AllowWhiteSpaces |
                                    DateTimeStyles.AdjustToUniversal,
                                    out parsedDate))
            Console.WriteLine("{0} --> {1:g}", dateString, parsedDate);
         else
            Console.WriteLine("Cannot convert {0}", dateString);
      }
   }
}
// The example displays the following output:
//       20130816 --> 8/16/2013 12:00 AM
//       Cannot convert 20131608
//         20130816    --> 8/16/2013 12:00 AM
//       115216 --> 4/22/2013 11:52 AM
//       Cannot convert 521116
//         115216   --> 4/22/2013 11:52 AM

Die Parse und ParseExact Methoden lösen eine Ausnahme aus, wenn die zu konvertierenden Zeichenfolge eine DateTime Wert kann nicht analysiert werden. Die TryParse und TryParseExact -Methoden zurückgeben einer Boolean Wert, der angibt, ob die Konvertierung erfolgreich war oder nicht. Da der Analysevorgang für Datum- und Uhrzeitzeichenfolgen, insbesondere, wenn Zeichenfolgen vom Benutzer eingegeben werden tendenziell auch eine hohe Fehlerrate und da Ausnahmebehandlung aufwendig ist, sollten Sie verwenden die TryParse oder TryParseExact Methoden in Szenarien, in denen Leistung wichtig ist oder Konvertierungen unterliegen einen hohen Anteil des Fehlers.

Weitere Informationen zum Analysieren von Datums-und Uhrzeitwerte finden Sie unter Analysieren von Zeichenfolgen für Datum und Uhrzeit in .NET Framework.

Vor .NET Framework, Version 2.0 die DateTime Struktur enthält ein 64-Bit-Feld besteht aus einem nicht verwendeten 2-Bit-Feld mit einer privaten Ticks Feld, das eine nicht signierte 62-Bit-Feld ist, der die Anzahl von Ticks, die das Datum und die Uhrzeit darstellen. Der Wert, der die Ticks Feld abgerufen werden kann, mit der Ticks Eigenschaft.

Beginnend mit .NET Framework 2.0 die DateTime Struktur besteht aus einem privaten Kind-Feld mit dem Feld Ticks 64-Bit-Feld enthält. Das Kind-Feld ist ein 2-Bit-Feld, der angibt, ob die DateTime Struktur eine Ortszeit, eine Coordinated Universal Time (UTC) oder die Zeit in einer nicht spezifizierten Zeitzone darstellt. Das Kind-Feld wird verwendet, wenn Time-Konvertierungen zwischen Zeitzonen, jedoch nicht für Vergleiche Zeit oder arithmetische Operationen durchführen. Der Wert des Felds Kind abgerufen werden kann, mit der Kind Eigenschaft.

System_CAPS_noteHinweis

Eine Alternative zu den DateTime -Struktur zum Arbeiten mit Datums-und Uhrzeitwerte in bestimmten Zeitzonen ist die DateTimeOffset Struktur. Die DateTimeOffset -Struktur speichert Datums-und Uhrzeitinformationen in einem privaten DateTime Feld und die Anzahl der Minuten, die nach dem Datum und Uhrzeit, von UTC abweicht, in einem privaten Int16 Feld. Dies macht es möglich, dass eine DateTimeOffset Wert, der die Zeit in einer bestimmten Zeitzone widerspiegeln, wohingegen ein DateTime Wert reflektiert eindeutig nur UTC und die lokale Zeitzone. Nähere Informationen zur Verwendung der DateTime Struktur oder das DateTimeOffset -Struktur bei der Arbeit mit Datums-und Uhrzeitwerte, finden Sie unter Auswählen zwischen "DateTime", "DateTimeOffset", "TimeSpan" und "TimeZoneInfo".

Beschreibungen der Time-Werten der DateTime sind häufig ausgedrückt wird mit den standardmäßigen Coordinated Universal Time (UTC), der der International Name für die Greenwich Mean Time (GMT) ist. Koordinierte Weltzeit ist die Zeit auf 0 (null) Längengrad der UTC-Ursprungspunkt gemessen. Sommerzeit gilt nicht in UTC.

Ortszeit ist relativ zu einer bestimmten Zeitzone. Eine Zeitzone ist ein Zeitzonenoffset, also die Verschiebung der Zeitzone, gemessen in Stunden von der UTC-Ursprungspunkt zugeordnet. Darüber hinaus wird Ortszeit optional die Sommerzeit, beeinflusst hinzufügt oder eine Stunde von der Länge eines Tages subtrahiert. Folglich ist Ortszeit berechnet, indem Sie den Zeitzonenoffset (UTC) und für die Sommerzeit bei Bedarf anpassen. Der Zeitzonenoffset zur UTC-Ursprungspunkt ist 0 (null).

UTC-Zeit eignet sich für Berechnungen, Vergleiche, das Speichern von Datums- und Uhrzeitangaben in Dateien. Ortszeit eignet sich für die Anzeige in Benutzeroberflächen von desktopanwendungen. Zeitzonenfähigen Anwendungen (z. B. viele Webanwendungen) müssen auch eine Reihe von anderen Zeitzonen arbeiten.

Wenn die Kind Eigenschaft eine DateTime Objekt DateTimeKind.Unspecified, es ist nicht angegeben, ob die Zeitangabe Ortszeit, UTC-Zeit oder eine Uhrzeit in einer anderen Zeitzone ist.

Eine Berechnung mit einem DateTime strukturieren, wie z. B. Add oder Subtract, ändert sich nicht auf den Wert der Struktur. Die Berechnung gibt stattdessen ein neues DateTime -Struktur, deren Wert das Ergebnis der Berechnung ist.

Konvertierungsoperationen zwischen Zeitzonen (z. B. zwischen UTC und Ortszeit oder zwischen einer Zeitzone) wird die Sommerzeit berücksichtigt, arithmetische und Vergleich jedoch nicht.

Die DateTime Struktur selbst bietet eingeschränkte Unterstützung für die Konvertierung von einer Zeitzone in eine andere. Können Sie die ToLocalTime -Methode zum Konvertieren von UTC in Ortszeit, oder Sie können die ToUniversalTime Methode, um von der Ortszeit in UTC konvertieren. Ein breites Spektrum an Methoden für die Konvertierung von Zeitzone ist jedoch verfügbar, in der TimeZoneInfo Klasse. Mit diesen Methoden können Sie die Zeit in einer beliebigen anderen Zeitzonen der Welt in die Zeit in einer beliebigen anderen Zeitzone konvertieren.

Berechnungen und Vergleiche von DateTime Objekte sind von Bedeutung, nur dann, wenn die Objekte Zeiten in der gleichen Zeitzone darstellen. Können Sie eine TimeZoneInfo Objekt zur Darstellung einer DateTime Zeitwerts Time zone, obwohl die beiden lose miteinander verbunden sind. (Das ist ein DateTime Objekt verfügt nicht über die Eigenschaft, die ein Objekt zurückgibt, die Zeitzone, Datum und Uhrzeit-Wert, außer darstellt die Kind Eigenschaft.) Aus diesem Grund in zeitzonenfähigen Anwendungen müssen Sie basieren auf einen externen Mechanismus aus, um zu bestimmen, die Zeitzone, in dem ein DateTime Objekt erstellt wurde. Beispielsweise können Sie eine Struktur, die beide dient als Wrapper für die DateTime Wert und die TimeZoneInfo Objekt, das darstellt der DateTime Zeitzone des Werts. Weitere Informationen zur Verwendung von UTC in Berechnungen und Vergleiche mit DateTime -Werte finden Sie in Durchführen arithmetischer Datums- und Uhrzeitoperationen.

Jede DateTime Member verwendet implizit den gregorianischen Kalender auszuführenden Vorgang, mit Ausnahme von Konstruktoren, die einen Kalender angeben und die Methoden mit einem Parameter abgeleitet IFormatProvider, wie z. B. System.Globalization.DateTimeFormatInfo, implizit einen Kalender angibt.

Vorgänge, die von einem Mitglied der DateTime Typ berücksichtigen Einzelheiten wie Schaltjahren und die Anzahl von Tagen im Monat.

Zwei andere allgemeine Vorgänge mit DateTime Werte verwendet, konvertieren einen Wert für Datum und Uhrzeit, zu oder aus seiner Zeichenfolgendarstellung. Der Vorgang des Umwandelns einer DateTime Wert in seine Zeichenfolgendarstellung ein Formatierungsvorgang; Weitere Informationen zur Formatierung finden Sie unter "DateTime" Werte und deren zeichenfolgendarstellungen. Konvertiert die Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in einem DateTime Wert wird ein Analysevorgang; Weitere Informationen zum Analysieren von finden Sie unter Konvertieren von Zeichenfolgen in DateTime-Werte.

System_CAPS_noteHinweis

Als Alternative zum Ausführen von Datums- und uhrzeitberechnungen auf DateTime Werte zum Messen der verstrichenen Zeit, können Sie die Stopwatch Klasse.

Die Ticks Eigenschaft ausdrückt, Datum und Uhrzeit-Werte in der Einheit ein zehnmillionstel einer Sekunde und die Millisecond Eigenschaft gibt die Tausendstelsekunden in einem Datums- und Uhrzeitangabe zurück. Allerdings bei Verwendung von wiederholte Aufrufe von der DateTime.Now Eigenschaft verstrichenen Zeit zu messen und Sie befürchten mit kleinen Zeitintervalle, die kleiner als 100 Millisekunden, beachten Sie, dass die zurückgegebenen Werte vom die DateTime.Now Eigenschaft hängen von der Systemuhr, der unter Windows 7 und Windows 8 eine von ca. 15 Millisekunden Auflösung.

Das folgende Beispiel veranschaulicht die Abhängigkeit des aktuellen Datums- und Uhrzeitwerten von der Auflösung der Systemuhr. Im Beispiel eine äußere Schleife wird 20-Mal wiederholt, und eine innere Schleife dient, um die äußere Schleife zu verzögern. Wenn der Wert des Leistungsindikators äußere Schleife 10, einen Aufruf der Thread.Sleep Methode führt eine Verzögerung von fünf Millisekunden. Wie die Ausgabe des Beispiels zeigt, die Anzahl der Millisekunden zurückgegeben, durch die DateTime.Now.Milliseconds -Eigenschaft geändert wird, nur nach dem Aufruf von Thread.Sleep.

using System;
using System.Threading;

public class Example
{
   public static void Main()
   {
      String output = "";
      for (int ctr = 0; ctr <= 20; ctr++) {
         output += String.Format("{0}\n", DateTime.Now.Millisecond);
         // Introduce a delay loop.
         for (int delay = 0; delay <= 1000; delay++)
         {}

         if (ctr == 10) {
            output += "Thread.Sleep called...\n";
            Thread.Sleep(5);
         }
      }
      Console.WriteLine(output);
   }
}
// The example displays the following output:
//       111
//       111
//       111
//       111
//       111
//       111
//       111
//       111
//       111
//       111
//       111
//       Thread.Sleep called...
//       143
//       143
//       143
//       143
//       143
//       143
//       143
//       143
//       143
//       143

Die DateTime und TimeSpan Werttypen unterscheiden sich hinsichtlich der, die eine DateTime zeitlich stellt einen Zeitpunkt dar, während eine TimeSpan stellt ein Zeitintervall dar. Dies bedeutet beispielsweise, dass eine Instanz des Subtrahierte DateTime voneinander zum Abrufen einer TimeSpan -Objekt, das Zeitintervall zwischen ihnen darstellt. Könnten Sie eine Positive hinzufügen TimeSpan mit dem aktuellen DateTime zum Abrufen einer DateTime Wert, der ein zukünftiges Datum darstellt.

Sie können addieren oder subtrahieren Sie ein Zeitintervall von einer DateTime Objekt. Zeitintervalle kann negativ oder positiv sein, in Einheiten wie Ticks oder Sekunden ausgedrückt werden können oder ausgedrückt werden können, als ein TimeSpan Objekt.

Der .NET Framework-Klassenbibliothek umfasst eine Reihe von Klassen für Kalender, die abgeleitet sind die Calendar Klasse. Dies sind:

Jede Kultur verwendet einen Standardkalender, durch dessen schreibgeschützt definierten CultureInfo.Calendar Eigenschaft und unterstützt eine oder mehrere Kalender, durch die nur-Lese definiert- CultureInfo.OptionalCalendars Eigenschaft. Der derzeit durch ein bestimmtes verwendete Kalender CultureInfo Objekt wird definiert, indem seine DateTimeFormatInfo.Calendar Eigenschafts-muss es sich um eine finden im Kalender das CultureInfo.OptionalCalendars Array.

Aktueller Kalender einer Kultur wird in allen Formatierungsvorgänge für die jeweilige Kultur verwendet. Der Standardkalender der Kultur Persisch (Iran) ist z. B. den Umm al-Qura-Kalender, der dargestellt wird, indem Sie die UmAlQuraCalendar Klasse. Wenn eine CultureInfo Objekt, das die Kultur Persisch (Iran) darstellt, wird in einem Datums- und uhrzeitformatierung Vorgang, verwendet der Umm al-Qura-Kalender wird standardmäßig verwendet und den gregorianischen Kalender wird nur verwendet, wenn der Kultur DateTimeFormatInfo.Calendar Eigenschaft geändert wird, wie im folgenden Beispiel gezeigt.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      var faIR = new CultureInfo("fa-IR");
      var value = new DateTime(2016, 5, 28);

      Console.WriteLine(value.ToString(faIR));

      faIR.DateTimeFormat.Calendar = new GregorianCalendar();
      Console.WriteLine(value.ToString(faIR));
   }
}
// The example displays the following output:
// 08/03/1395 12:00:00 ?.?
// 28/05/2016 12:00:00 ?.?

Aktueller Kalender einer Kultur wird auch in allen Analysevorgänge für die jeweilige Kultur verwendet, wie im folgenden Beispiel gezeigt.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      var faIR = new CultureInfo("fa-IR");
      var value = DateTime.Parse("08/03/1395", faIR);
      Console.WriteLine(value.ToString(faIR));

      faIR.DateTimeFormat.Calendar = new GregorianCalendar();
      Console.WriteLine(value.ToString(faIR));
   }
}
// The example displays the following output:
//       08/03/1395 12:00:00 ?.?
//       28/05/2016 12:00:00 ?.?

Auch instanziiert werden können eine DateTime Wert mithilfe der Datums- und Uhrzeitangabe Elemente (z. B. die Anzahl der Jahr, Monat und Tag) für einen bestimmten Kalender durch Aufrufen eine "DateTime"-Konstruktor , umfasst eine calendar Parameter und zur Übergabe an eine Calendar -Objekt, das diesen Kalender darstellt. Im folgende Beispiel wird dies durch Verwenden der Datums- und Uhrzeitangabe Elemente aus der UmAlQuraCalendar Kalender.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      var faIR = new CultureInfo("fa-IR");
      var dat = new DateTime(1395, 8, 18, faIR.DateTimeFormat.Calendar);
      Console.WriteLine("Umm-al-Qura date: {0}", dat.ToString("d", faIR));
      Console.WriteLine("Gregorian date:   {0:d}", dat);
   }
}
// The example displays the following output:
//       Umm-al-Qura date: 18/08/1395
//       Gregorian date:   11/8/2016

DateTimeKonstruktoren, die keine calendar Parameter wird davon ausgegangen, dass die Datums- und Uhrzeitangabe Elemente als Einheiten im gregorianischen Kalender ausgedrückt werden.

Alle anderen DateTime Eigenschaften und Methoden verwenden den gregorianischen Kalender. Z. B. die DateTime.Year Eigenschaft gibt das Jahr im gregorianischen Kalender und die DateTime.IsLeapYear(Int32) Methode setzt voraus, dass die year Parameter ist ein Jahr im gregorianischen Kalender. Jede DateTime Element, das den gregorianischen Kalender verwendet wurde, einen entsprechenden Member der der Calendar -Klasse, die einen bestimmten Kalender verwendet. Z. B. die Calendar.GetYear Methodenrückgabe des Jahres in einem bestimmten Kalender und die Calendar.IsLeapYear -Methode interpretiert die year Parameter als eine Zahl in einem bestimmten dar. Im folgende Beispiel verwenden sowohl der DateTime und den entsprechenden Mitgliedern von der UmAlQuraCalendar Klasse.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      var faIR = new CultureInfo("fa-IR");
      var cal = faIR.DateTimeFormat.Calendar;
      var dat = new DateTime(1395, 8, 18, cal);
      Console.WriteLine("Using the Umm-al-Qura calendar:");
      Console.WriteLine("Date: {0}", dat.ToString("d", faIR));
      Console.WriteLine("Year: {0}", cal.GetYear(dat));
      Console.WriteLine("Leap year: {0}\n", 
                        cal.IsLeapYear(cal.GetYear(dat)));

      Console.WriteLine("Using the Gregorian calendar:");
      Console.WriteLine("Date: {0:d}", dat);
      Console.WriteLine("Year: {0}", dat.Year);
      Console.WriteLine("Leap year: {0}", DateTime.IsLeapYear(dat.Year));
   }
}
// The example displays the following output:
//       Using the Umm-al-Qura calendar:
//       Date: 18/08/1395
//       Year: 1395
//       Leap year: True
//       
//       Using the Gregorian calendar:
//       Date: 11/8/2016
//       Year: 2016
//       Leap year: True

Obwohl die DateTime Struktur enthält DayOfWeek Eigenschaft, die den Tag der Woche im gregorianischen Kalender zurückgibt, sind nicht enthalten ein Element, das Sie die Nummer der Woche des Jahres abrufen kann. Um die Woche des Jahres zu abzurufen, rufen Sie die einzelnen Kalender Calendar.GetWeekOfYear Methode. Dies wird im folgenden Beispiel veranschaulicht.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      var faIR = new CultureInfo("fa-IR");
      var umAlQura = faIR.DateTimeFormat.Calendar;
      var dat = new DateTime(1395, 8, 18, umAlQura);
      Console.WriteLine("Using the Umm-al-Qura calendar:");
      Console.WriteLine("Date: {0}", dat.ToString("d", faIR));
      Console.WriteLine("Day of Week: {0}", umAlQura.GetDayOfWeek(dat));
      Console.WriteLine("Week of year: {0}\n", 
                        umAlQura.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, 
                                               DayOfWeek.Sunday));

      var greg = new GregorianCalendar(); 
      Console.WriteLine("Using the Gregorian calendar:");
      Console.WriteLine("Date: {0:d}", dat);
      Console.WriteLine("Day of Week: {0}", dat.DayOfWeek);
      Console.WriteLine("Week of year: {0}", 
                         greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, 
                                            DayOfWeek.Sunday));
   }
}
// The example displays the following output:
//       Using the Umm-al-Qura calendar:
//       Date: 18/08/1395
//       Day of Week: Tuesday
//       Week of year: 34
//       
//       Using the Gregorian calendar:
//       Date: 11/8/2016
//       Day of Week: Tuesday
//       Week of year: 46

Weitere Informationen zu Datumsangaben und Kalender, finden Sie unter Arbeiten mit Kalendern.

Sie können beibehalten DateTime Werte gibt es vier Möglichkeiten:

Unabhängig davon, welche Verfahren Sie auswählen, die die Routine müssen Sie sicherstellen, die wiederhergestellt der DateTime Werte keine Daten verloren gehen oder löst eine Ausnahme. DateTimeWerte sollten Roundtrip. D. h. sollte den ursprünglichen Wert und der wiederhergestellte Wert identisch sein. Und wenn die ursprüngliche DateTime Wert stellt eine einzelne Zeitinstanz, muss es identifizieren, die gleichen Moment Zeit, wenn sie wiederhergestellt wird.

Erfolgreich wiederherstellen DateTime Werte, die als Zeichenfolgen beibehalten werden folgende Regeln zu beachten:

  • Annahmen Sie die gleichen über die kulturabhängige Formatierung, wenn Sie die Zeichenfolge als wenn Sie sie beibehalten wiederherstellen. Aufrufen, um sicherzustellen, dass eine Zeichenfolge in einem System, dessen aktuelle Kultur unterscheidet sich von der Kultur des Systems auf gespeicherten, wiederhergestellt werden kann, die ToStringÜberladung, die Zeichenfolge zu speichern, indem Sie mit den Konventionen der invarianten Kultur, und rufen die Parse(String, IFormatProvider, DateTimeStyles) oder TryParse(String, IFormatProvider, DateTimeStyles, DateTime) methodenüberladung, um die Zeichenfolge wiederherstellen, indem Sie mit den Konventionen der invarianten Kultur. Verwenden Sie niemals die ToString(), Parse(String), oder TryParse(String, DateTime) Überladungen, die die Konventionen der aktuellen Threadkultur verwendet.

  • Wenn die Daten über einen einzigen Zeitpunkt darstellt, stellen Sie sicher, dass sie die Zeit, wenn sie wiederhergestellt wird, die denselben Zeitpunkt darstellt, auch wenn es auf einem System wiederhergestellt wird, die eine andere Zeitzone verwendet. Konvertieren Sie zu diesem Zweck die DateTime Wert (Coordinated Universal Time, UTC), und speichern Sie es. Sie können auch den Wert zusammen mit Informationen zur Zeitzone serialisieren; Weitere Informationen zu diesem Verfahren finden Sie unter Daten serialisieren, "DateTime" und Zeitzone.

Der häufigste Fehler, die durchgeführt wird, wenn beibehalten DateTime Werten als Zeichenfolgen ist, um auf die Formatierungskonventionen der standardmäßigen oder der aktuellen Kultur basieren. Probleme auftreten, wenn die aktuelle Kultur anders aus, wenn speichern und Wiederherstellen von Zeichenfolgen ist. Das folgende Beispiel veranschaulicht diese Probleme. Es speichert fünf Datumsangaben, die Verwendung der Formatierungskonventionen der aktuellen Kultur, die in diesem Fall Englisch (Vereinigte Staaten) ist. Es stellt wieder her, die Datumsangaben, die Verwendung der Formatierungskonventionen der aktuellen Kultur, die in diesem Fall Englisch (Großbritannien) ist. Da die Formatierungskonventionen der Kulturen zwei unterschiedlich sind, zwei Datumsangaben nicht wiederhergestellt werden, und die verbleibenden drei Datumsangaben falsch interpretiert werden. Darüber hinaus handelt es sich bei der ursprünglichen Werte für Datum und Uhrzeit einzelne Momente beziehen, die wiederhergestellte Zeiten sind falsch, da die Zeitzoneninformationen verloren geht.

using System;
using System.Globalization;
using System.IO;
using System.Threading;

public class Example
{
   private const string filename = @".\BadDates.txt";

   public static void Main()
   {
      if (! File.Exists(filename))
         SaveDates();
      else
         RestoreDates();
   }

   private static void SaveDates()
   {
      DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0), 
                           new DateTime(2014, 7, 10, 23, 49, 0),  
                           new DateTime(2015, 1, 10, 1, 16, 0), 
                           new DateTime(2014, 12, 20, 21, 45, 0), 
                           new DateTime(2014, 6, 2, 15, 14, 0) }; 
      string output = null;

      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      for (int ctr = 0; ctr < dates.Length; ctr++) { 
         Console.WriteLine(dates[ctr].ToString("f"));
         output += dates[ctr].ToString() + (ctr != dates.Length - 1 ? "|" : "");
      }
      StreamWriter sw = new StreamWriter(filename);
      sw.Write(output);
      sw.Close();
      Console.WriteLine("Saved dates...");
   }

   private static void RestoreDates()
   {
      TimeZoneInfo.ClearCachedData();
      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
      StreamReader sr = new StreamReader(filename);
      string[] inputValues = sr.ReadToEnd().Split( new char[] { '|' } , 
                                                  StringSplitOptions.RemoveEmptyEntries);
      sr.Close();
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      foreach (var inputValue in inputValues) {
         DateTime dateValue;
         if (DateTime.TryParse(inputValue, out dateValue)) {
            Console.WriteLine("'{0}' --> {1:f}", inputValue, dateValue);
         }
         else {
            Console.WriteLine("Cannot parse '{0}'", inputValue);   
         }
      }
      Console.WriteLine("Restored dates...");   
   }
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       Cannot parse //6/14/2014 6:32:00 AM//
//       //7/10/2014 11:49:00 PM// --> 07 October 2014 23:49
//       //1/10/2015 1:16:00 AM// --> 01 October 2015 01:16
//       Cannot parse //12/20/2014 9:45:00 PM//
//       //6/2/2014 3:14:00 PM// --> 06 February 2014 15:14
//       Restored dates...

Für den roundtripvorgang DateTime Werte erfolgreich, gehen Sie folgendermaßen vor:

  1. Wenn die Werte die einzelne Minuten Zeit darstellen, konvertieren Sie sie aus der lokalen Zeit in UTC durch Aufrufen der ToUniversalTime Methode.

  2. Konvertieren von Datumsangaben in deren zeichenfolgendarstellungen durch Aufrufen der ToString(String, IFormatProvider) oder String.Format(IFormatProvider, String, Object[]) überladen. Verwenden Sie die Formatierungskonventionen der invarianten Kultur durch Angabe CultureInfo.InvariantCulture als die provider Argument. Geben Sie, dass der Wert mithilfe der "O" oder "R" zurückkonvertiert werden sollte.

  3. Beim Aufrufen der Parse(String, IFormatProvider, DateTimeStyles) oder TryParse(String, IFormatProvider, DateTimeStyles, DateTime) Methode.

Zum Wiederherstellen des beibehaltenen DateTime Werte ohne Datenverlust, gehen Sie folgendermaßen vor:

  1. Die Daten analysieren, durch Aufrufen der ParseExact oder TryParseExact überladen. Geben Sie CultureInfo.InvariantCulture als die provider Argument, und verwenden Sie die gleiche Standardformat Zeichenfolge für die format Argument bei der Konvertierung. Enthalten die DateTimeStyles.RoundtripKind Wert in der styles Argument.

  2. Wenn die DateTime Werte darzustellen, einzelne Momente beziehen, rufen die ToLocalTime Methode, um das analysierte Datum von UTC in die Ortszeit zu konvertieren.

Im folgenden Beispiel wird die invariante Kultur und die Standardformatzeichenfolge "O", um sicherzustellen, dass DateTime Werte, die gespeichert und wiederhergestellt werden darstellen, die denselben Zeitpunkt unabhängig vom System, die Kultur oder die Zeitzone der Quell- und Ziel-Systeme.

using System;
using System.Globalization;
using System.IO;
using System.Threading;

public class Example
{
   private const string filename = @".\Dates.txt";

   public static void Main()
   {
      if (! File.Exists(filename))
         SaveDates();
      else
         RestoreDates();
   }

   private static void SaveDates()
   {
      DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0), 
                           new DateTime(2014, 7, 10, 23, 49, 0),  
                           new DateTime(2015, 1, 10, 1, 16, 0), 
                           new DateTime(2014, 12, 20, 21, 45, 0), 
                           new DateTime(2014, 6, 2, 15, 14, 0) }; 
      string output = null;

      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      for (int ctr = 0; ctr < dates.Length; ctr++) { 
         Console.WriteLine(dates[ctr].ToString("f"));
         output += dates[ctr].ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) 
                   + (ctr != dates.Length - 1 ? "|" : "");
      }
      StreamWriter sw = new StreamWriter(filename);
      sw.Write(output);
      sw.Close();
      Console.WriteLine("Saved dates...");
   }

   private static void RestoreDates()
   {
      TimeZoneInfo.ClearCachedData();
      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
      StreamReader sr = new StreamReader(filename);
      string[] inputValues = sr.ReadToEnd().Split( new char[] { '|' } , 
                                                  StringSplitOptions.RemoveEmptyEntries);
      sr.Close();
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      foreach (var inputValue in inputValues) {
         DateTime dateValue;
         if (DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture, 
                               DateTimeStyles.RoundtripKind, out dateValue)) {
            Console.WriteLine("'{0}' --> {1:f}", 
                              inputValue, dateValue.ToLocalTime());
         }
         else {
            Console.WriteLine("Cannot parse '{0}'", inputValue);   
         }
      }
      Console.WriteLine("Restored dates...");   
   }
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
//       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
//       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
//       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
//       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
//       Restored dates...

Anstelle von beibehalten einer DateTime Wert als Zeichenfolge, können Sie ihn als beibehalten einer Int64 Wert, der eine Anzahl von Ticks darstellt. In diesem Fall Sie haben nicht die Kultur der Systeme zu berücksichtigen die DateTime Werte beibehalten und auf wiederhergestellt werden.

Beibehalten einer DateTime Wert als ganze Zahl:

  • Wenn die DateTime Werte stehen für einzelne Momente beziehen, diese in UTC konvertieren, durch Aufrufen der ToUniversalTime Methode.

  • Die Anzahl der Ticks Abrufen der DateTime Wert aus der Ticks Eigenschaft.

Zum Wiederherstellen einer DateTime -Wert, der als ganze Zahl persistent gespeichert wurde:

  1. Instanziieren Sie ein neues DateTime -Objekt durch Übergeben der Int64 -Wert an die DateTime(Int64) Konstruktor.

  2. Wenn die DateTime Wert stellt einen einzelnen Zeitpunkt dar, konvertieren Sie diesen von UTC in die lokale Uhrzeit, durch Aufrufen der ToLocalTime Methode.

Im folgenden Beispiel wird weiterhin besteht, ein Array von DateTime Werte als ganze Zahlen in einem System in den USA Zeitzone Pacific anzuzeigen. Sie werden auf einem System in der UTC-Zone wiederhergestellt. Enthält die Datei, die ganze Zahlen enthält, ein Int32 -Wert, der die Gesamtzahl der Int64 Werte, die unmittelbar folgen.

using System;
using System.Globalization;
using System.IO;
using System.Threading;

class Example
{
   private const string filename = @".\IntDates.bin";

   public static void Main()
   {
      if (! File.Exists(filename))
         SaveDates();
      else
         RestoreDates();
   }

   private static void SaveDates()
   {
      DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0), 
                           new DateTime(2014, 7, 10, 23, 49, 0),  
                           new DateTime(2015, 1, 10, 1, 16, 0), 
                           new DateTime(2014, 12, 20, 21, 45, 0), 
                           new DateTime(2014, 6, 2, 15, 14, 0) }; 

      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      long[] ticks = new long[dates.Length];
      for (int ctr = 0; ctr < dates.Length; ctr++) { 
         Console.WriteLine(dates[ctr].ToString("f"));
         ticks[ctr] = dates[ctr].ToUniversalTime().Ticks; 
      }
      FileStream fs = new FileStream(filename, FileMode.Create);
      BinaryWriter bw = new BinaryWriter(fs);
      bw.Write(ticks.Length);
      foreach (var tick in ticks)
         bw.Write(tick);

      bw.Close();
      Console.WriteLine("Saved dates...");
   }

   private static void RestoreDates()
   {
      TimeZoneInfo.ClearCachedData();
      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
      FileStream fs = new FileStream(filename, FileMode.Open);
      BinaryReader br = new BinaryReader(fs);
      int items;
      DateTime[] dates;

      try { 
         items = br.ReadInt32();
         dates = new DateTime[items];

         for (int ctr = 0; ctr < items; ctr++) {
            long ticks = br.ReadInt64();
            dates[ctr] = new DateTime(ticks).ToLocalTime();
         }
      }   
      catch (EndOfStreamException) {
         Console.WriteLine("File corruption detected. Unable to restore data...");
         return;
      }   
      catch (IOException) {
         Console.WriteLine("Unspecified I/O error. Unable to restore data...");
         return;
      }
      // Thrown during array initialization.
      catch (OutOfMemoryException) {
         Console.WriteLine("File corruption detected. Unable to restore data...");
         return;
      }
      finally {      
         br.Close();
      }   

      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      foreach (var value in dates)
         Console.WriteLine(value.ToString("f"));

      Console.WriteLine("Restored dates...");   
   }
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       14 June 2014 14:32
//       11 July 2014 07:49
//       10 January 2015 09:16
//       21 December 2014 05:45
//       02 June 2014 23:14
//       Restored dates...

Anstatt speichern DateTime Werte als Zeichenfolgen oder Ganzzahlen, die Sie dann über konvertiert zurück zum DateTime Werte, die Sie beibehalten DateTime Werte mittels Serialisierung an einen Stream oder Datei, und klicken Sie dann wiederherstellen werden durch Deserialisierung. In diesem Fall DateTimeDaten in ein Format für die angegebene Objekt serialisiert werden, und die Objekte werden wiederhergestellt, wenn sie deserialisiert werden. Ein Formatierungsprogramm oder Serialisierer, wie z. B. XmlSerializer oder BinaryFormatter, verarbeitet die Serialisierung und Deserialisierung durchzuführen. Weitere Informationen zu Serialisierung und die Art der Serialisierung von .NET Framework unterstützt, finden Sie unter Serialisierung.

Im folgenden Beispiel wird die XmlSerializer Klasse zum Serialisieren und Deserialisieren DateTime leap Jahr Tage in dem 21. Jahrhundert-Werte, die alle darstellen. Die Ausgabe stellt das Ergebnis dar, wenn das Beispiel auf einem System ausgeführt wird, dessen aktuelle Kultur Englisch (Großbritannien) ist. Da wir deserialisiert haben die DateTime Objekt selbst, den Code nicht muss, um kulturelle Unterschiede in der Datums- und Zeitformate zu behandeln.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Xml.Serialization;

class Example
{
   private const string filename = @".\LeapYears.xml";

   public static void Main()
   {
      // Serialize the data.
      List<DateTime> leapYears = new List<DateTime>();
      for (int year = 2000; year <= 2100; year += 4) {
         if (DateTime.IsLeapYear(year)) 
            leapYears.Add(new DateTime(year, 2, 29));
      }
      DateTime[] dateArray = leapYears.ToArray();

      XmlSerializer serializer = new XmlSerializer(dateArray.GetType());
      TextWriter sw = new StreamWriter(filename);

      try {
         serializer.Serialize(sw, dateArray);
      }
      catch (InvalidOperationException e) {
         Console.WriteLine(e.InnerException.Message);         
      }
      finally {
         if (sw != null) sw.Close();
      }   

      // Deserialize the data.
      DateTime[] deserializedDates;
      using (FileStream fs = new FileStream(filename, FileMode.Open)) {
         deserializedDates = (DateTime[]) serializer.Deserialize(fs);
      } 

      // Display the dates.
      Console.WriteLine("Leap year days from 2000-2100 on an {0} system:",
                        Thread.CurrentThread.CurrentCulture.Name);
      int nItems = 0;
      foreach (var dat in deserializedDates) {
         Console.Write("   {0:d}     ", dat);
         nItems++;
         if (nItems % 5 == 0) 
               Console.WriteLine(); 
      }
   }
}
// The example displays the following output:
//    Leap year days from 2000-2100 on an en-GB system:
//       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
//       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
//       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
//       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
//       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

Im vorherige Beispiel ist Zeitinformationen nicht enthalten. Jedoch, wenn eine DateTime Wert stellt einen Zeitpunkt dar und wird als lokale Zeit angegeben, Sie sollten konvertieren Sie sie von der Ortszeit in UTC-Zeit vor der Serialisierung durch Aufrufen der ToUniversalTime Methode. Nach der Deserialisierung wird Sie sollten konvertieren Sie diesen von UTC in die Ortszeit durch Aufrufen der ToLocalTime Methode. Im folgenden Beispiel wird die BinaryFormatter Klasse zur SerialisierungDateTime Daten auf einem System in den USA Zeitzone Pacific Standard Time und um es auf einem System in der UTC-Zone zu deserialisieren.

using System;
using System.IO;
using System.Globalization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;

class Example
{
   private const string filename = @".\Dates.bin";

   public static void Main()
   {
      if (! File.Exists(filename))
         SaveDates();
      else
         RestoreDates();
   }

   private static void SaveDates()
   {
      DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0), 
                           new DateTime(2014, 7, 10, 23, 49, 0),  
                           new DateTime(2015, 1, 10, 1, 16, 0), 
                           new DateTime(2014, 12, 20, 21, 45, 0), 
                           new DateTime(2014, 6, 2, 15, 14, 0) }; 
      FileStream fs = new FileStream(filename, FileMode.Create);
      BinaryFormatter bin = new BinaryFormatter();

      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      for (int ctr = 0; ctr < dates.Length; ctr++) { 
         Console.WriteLine(dates[ctr].ToString("f"));
         dates[ctr] = dates[ctr].ToUniversalTime();
      }
      bin.Serialize(fs, dates);
      fs.Close();
      Console.WriteLine("Saved dates...");
   }

   private static void RestoreDates()
   {
      TimeZoneInfo.ClearCachedData();
      Console.WriteLine("Current Time Zone: {0}",
                        TimeZoneInfo.Local.DisplayName);
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

      FileStream fs = new FileStream(filename, FileMode.Open);
      BinaryFormatter bin = new BinaryFormatter();
      DateTime[] dates = (DateTime[]) bin.Deserialize(fs);
      fs.Close();

      Console.WriteLine("The dates on an {0} system:", 
                        Thread.CurrentThread.CurrentCulture.Name);
      foreach (var value in dates)
         Console.WriteLine(value.ToLocalTime().ToString("f"));

      Console.WriteLine("Restored dates...");   
   }
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       14 June 2014 14:32
//       11 July 2014 07:49
//       10 January 2015 09:16
//       21 December 2014 05:45
//       02 June 2014 23:14
//       Restored dates...

In den vorherigen Beispielen haben alle davon ausgegangen, dass DateTime Werte werden als Ortszeiten angegeben wird und die Werte zwischen UTC und Ortszeit konvertiert, damit sie den gleichen Zeitpunkt auf den Quell- und Ziel-Systemen weisen. DateTimein einer Zeitzone als Local und UTC Momente beziehen kann ebenfalls berücksichtigt werden. In diesem Fall da die DateTime Struktur ist nicht zeitzonenfähigen, müssen Sie sowohl serialisiert die DateTimeWert und die TimeZoneInfo -Objekt, das die Zeitzone darstellt. Zu diesem Zweck erstellen Sie einen Typ, dessen Felder enthalten, sowohl sind, der DateTime Wert und seiner Zeitzone. Das folgende Beispiel definiert eine DateWithTimeZone -Struktur, die veranschaulicht, wie dies erreicht werden kann.

using System;

namespace DateTimeExtensions
{
   [Serializable] public struct DateWithTimeZone
   {
      private TimeZoneInfo tz;
      private DateTime dt;

      public DateWithTimeZone(DateTime dateValue, TimeZoneInfo timeZone)
      {
         dt = dateValue;
         if (timeZone == null)
            tz = TimeZoneInfo.Local;
         else
            tz = timeZone;
      }   

      public TimeZoneInfo TimeZone 
      { get { return (tz); }
        set { tz = value; } }

      public DateTime DateTime 
      { get { return (dt); }
        set { dt = value; } }
   }
}
System_CAPS_importantWichtig

Die DateWithTimeZone Struktur werden in den nächsten beiden Beispielen, die Serialisierung und Deserialisierung ein Array von DateWithTimeZone Objekte. Um die Beispiele auszuführen, erstellen Sie zunächst eine Klassenbibliothek, enthält die DateWithTimeZone Struktur, und fügen Sie einen Verweis darauf hinzu, wenn Sie in jedem Beispiel kompilieren.

Mithilfe der DateWithTimeZone -Struktur, Sie können dann persistent gespeichert, Datums- und Uhrzeitwert zusammen mit Informationen zur Zeitzone. Im folgenden Beispiel wird die BinaryFormatter Klasse, um ein Array von Serialisieren DateWithTimeZoneObjekte.

using System;
using DateTimeExtensions;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

public class Example
{
   public static void Main()
   {
      DateWithTimeZone[] dates= { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),  
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0), 
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),  
                                  new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),  
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),  
                                  new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0), 
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
      FileStream fs = new FileStream(@".\Schedule.bin", FileMode.Create);
      BinaryFormatter formatter = new BinaryFormatter();
      try {
         formatter.Serialize(fs, dates);
         // Display dates.
         foreach (var date in dates) {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine("{0} {1}", date.DateTime, 
                              tz.IsDaylightSavingTime(date.DateTime) ? 
                              tz.DaylightName : tz.StandardName);      
         }
      }
      catch (SerializationException e) {
         Console.WriteLine("Serialization failed. Reason: {0}", e.Message);
      }   
      finally {
         if (fs != null) fs.Close();
      }
   }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time

Im folgende Beispiel ruft dann die BinaryFormatter.Deserialize -Methode zu deserialisieren.

using System;
using DateTimeExtensions;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

public class Example
{
   private const string filename = @".\Schedule.bin";

   public static void Main()
   {
      FileStream fs;
      if (File.Exists(filename))
         fs = new FileStream(filename, FileMode.Open);
      else {
         Console.WriteLine("Unable to find file to deserialize.");
         return;
      }

      BinaryFormatter formatter = new BinaryFormatter();
      DateWithTimeZone[] dates;
      try {
         dates = (DateWithTimeZone[]) formatter.Deserialize(fs);
         // Display dates.
         foreach (var date in dates) {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine("{0} {1}", date.DateTime, 
                              tz.IsDaylightSavingTime(date.DateTime) ? 
                              tz.DaylightName : tz.StandardName);      
         }
      }
      catch (SerializationException e) {
         Console.WriteLine("Deserialization failed. Reason: {0}", e.Message);
      }   
      finally {
         if (fs != null) fs.Close();
      }
   }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time

Ein DateTime für den roundtripvorgang herrscht die verbreitete Wert, der auf eine COM-Anwendung übertragen wird, und klicken Sie dann wieder auf einer verwalteten Anwendung übertragen wird. Allerdings eine DateTime Wert, der nur eine Zeit angibt, hat keinen Roundtrip, wie zu erwarten.

Wenn Round-Trip nur einen Zeitraum, etwa 15: 00 Uhr, das Enddatum und die Uhrzeit 3:00 Uhr 30. Dezember 1899 unserer Zeitrechnung um 3:00 Uhr, anstelle der 1. Januar 0001 unserer Zeitrechnung ist Dies liegt daran, dass die .NET Framework- und COM ein Standarddatum annehmen, wenn nur eine Uhrzeit angegeben wird. Setzt jedoch voraus das com-System als Basisdatum am 30. Dezember 1899 unserer Zeitrechnung während der .NET Framework als Basisdatum den 1. Januar 0001 unserer Zeitrechnung annimmt.

Wenn nur ein Mal aus .NET Framework an COM übergeben wird, ist besondere Verarbeitung ausgeführt, die die Zeit in das vom COM verwendete Format konvertiert Wenn nur eine Uhrzeit in .NET Framework aus COM übergeben wird, wird keine besondere Verarbeitung ausgeführt, da, die gültige Datumsangaben und Uhrzeiten am oder vor dem 30. Dezember 1899 wieder beschädigt würden. Dies bedeutet auch, wenn ein Datum den Roundtrip aus COM startet, die .NET Framework- und COM das Datum beibehalten.

Das Verhalten der .NET Framework- und COM bedeutet, dass bei Ihrer Anwendung Roundtrips eine DateTime , die nur eine Zeit angibt, die Ihre Anwendung denken, ändern oder zu ignorieren die von der letzten DateTime Objekt.

Im folgende Beispiel wird veranschaulicht, wie etwa verglichen entsprechende DateTime Werte, die einen kleineren Rand Unterschied akzeptieren, wenn sie gleich zu deklarieren.

using System;

class DateTimeTester 
{
   static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
   {
      long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds 
                                                     % frequencyInSeconds;

      delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;

      return Math.Abs(delta) < windowInSeconds;
	}

	public static void Main() 
	{
      int window = 10;
      int freq = 60 * 60 * 2; // 2 hours;

      DateTime d1 = DateTime.Now;

      DateTime d2 = d1.AddSeconds(2 * window);
      DateTime d3 = d1.AddSeconds(-2 * window);
      DateTime d4 = d1.AddSeconds(window / 2);
      DateTime d5 = d1.AddSeconds(-window / 2);

      DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
      DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
      DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
      DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2);

      Console.WriteLine("d1 ({0}) ~= d1 ({1}): {2}",
                        d1, d1, RoughlyEquals(d1, d1, window, freq));
      Console.WriteLine("d1 ({0}) ~= d2 ({1}): {2}", 
                        d1, d2, RoughlyEquals(d1, d2, window, freq));
      Console.WriteLine("d1 ({0}) ~= d3 ({1}): {2}", 
                        d1, d3, RoughlyEquals(d1, d3, window, freq));
      Console.WriteLine("d1 ({0}) ~= d4 ({1}): {2}", 
                        d1, d4, RoughlyEquals(d1, d4, window, freq));
      Console.WriteLine("d1 ({0}) ~= d5 ({1}): {2}", 
                        d1, d5, RoughlyEquals(d1, d5, window, freq));

      Console.WriteLine("d1 ({0}) ~= d6 ({1}): {2}", 
                        d1, d6, RoughlyEquals(d1, d6, window, freq));
      Console.WriteLine("d1 ({0}) ~= d7 ({1}): {2}", 
                        d1, d7, RoughlyEquals(d1, d7, window, freq));
      Console.WriteLine("d1 ({0}) ~= d8 ({1}): {2}", 
                        d1, d8, RoughlyEquals(d1, d8, window, freq));
      Console.WriteLine("d1 ({0}) ~= d9 ({1}): {2}", 
                        d1, d9, RoughlyEquals(d1, d9, window, freq));
	}
}
// The example displays output similar to the following:
//    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle Member dieses Typs sind threadsicher. Elemente, die angezeigt werden, so ändern Sie den Zustand der Instanz zurückgeben tatsächlich eine neue Instanz mit dem neuen Wert initialisiert. Als müssen mit einem beliebigen anderen Typ Lesen und Schreiben in eine freigegebene Variable, die eine Instanz dieses Typs enthält durch ein Schloss auf Threadsicherheit geschützt werden.

System_CAPS_cautionAchtung

Eine Instanz dieses Typs zuweisen ist nicht threadsicher auf alle Hardwareplattformen, da die binäre Darstellung dieser Instanz zu groß, um in einem einzelnen atomaren Vorgang zugewiesen werden kann.

Zurück zum Anfang
Anzeigen:
© 2017 Microsoft