Warum funktioniert DateTime.Now.ToString ("u") nicht?

9

Ich bin derzeit in Britische Sommerzeit , die UTC +1 Stunde beträgt. Ich habe bestätigt, dass mein PC mit dem folgenden Code korrekt ist, und es wird true zurückgegeben.

%Vor%

Meine Frage ist dann, warum funktioniert der UTC-Formatierer nicht so, wie ich es erwarten würde:

%Vor%

Es gibt das genaue aktuelle Systemdatum wie unten im UTC-Format wie erwartet, aber mit dem Z ( Zulu-Zeit ) zurück ) am Ende nicht +01: 00?

d. h.

%Vor%

nicht

%Vor%

Funktioniert das korrekt?

    
John 27.05.2009, 13:27
quelle

3 Antworten

18

MSDN gibt Folgendes an:

  

Stellt eine benutzerdefinierte Datums- und Uhrzeitformatzeichenfolge dar, die von der DateTimeFormatInfo.UniversalSortableDateTimePattern-Eigenschaft definiert wird. Das Muster gibt einen definierten Standard wieder und die Eigenschaft ist schreibgeschützt. Daher ist es immer gleich, unabhängig von der verwendeten Kultur oder vom Formatanbieter. Die benutzerdefinierte Formatzeichenfolge lautet "JJJJ" - "MM" - "TT HH": "mm": "SSZ".

     

Wenn dieser Standardformatbezeichner verwendet wird, verwendet die Formatierungs- oder Parsingoperation immer die invariante Kultur.

     

Beim Formatieren wird die Zeitzone für das Datums- und Uhrzeitobjekt nicht konvertiert. Daher muss die Anwendung vor der Verwendung dieses Formatspezifizierers ein Datum und eine Uhrzeit in koordinierte Weltzeit (Coordinated Universal Time, UTC) umwandeln.

Sie sollten den folgenden Code verwenden, um Ihr aktuelles Datum vor dem Formatieren in UTC zu konvertieren:

%Vor%

oder

%Vor%

Um das von Ihnen erwartete Format anzuzeigen (z. B. 2009-05-27 14: 21: 22 + 01: 00), müssen Sie ein benutzerdefiniertes Datumsformat verwenden:

%Vor%     
Patrick McDonald 27.05.2009, 13:32
quelle
5

"u" ist das universelle sortierbare Datum / Uhrzeit-Muster, nicht das UTC-Format; Um die Dokumentation zu zitieren:

  

Repräsentiert eine benutzerdefinierte Datums- und Uhrzeitformat-Zeichenfolge, die von der DateTimeFormatInfo .. ::. UniversalSortableDateTimePattern-Eigenschaft definiert wird. Das Muster gibt einen definierten Standard wieder und die Eigenschaft ist schreibgeschützt. Daher ist es immer gleich, unabhängig von der verwendeten Kultur oder vom Formatanbieter. Die benutzerdefinierte Formatzeichenfolge lautet "JJJJ" - "MM" - "TT HH": "mm": "SSZ".

     

Wenn dieser Standardformatbezeichner verwendet wird, verwendet die Formatierungs- oder Parsingoperation immer die invariante Kultur.

     

Die Formatierung konvertiert die Zeitzone für das Datums- und Uhrzeitobjekt nicht. Daher muss die Anwendung vor der Verwendung dieses Formatspezifizierers ein Datum und eine Uhrzeit in koordinierte Weltzeit (Coordinated Universal Time, UTC) konvertieren.

    
Rowland Shaw 27.05.2009 13:33
quelle
3

Sie müssen DateTime.Now.ToUniversalTime () verwenden. ToString ("u").

    
Badaro 27.05.2009 13:39
quelle

Tags und Links