Konvertieren UTC-DateTime in DateTimeOffset
Muss ich konvertieren UTC
Datums-Zeichenketten zu DateTimeOffsets
.
Muss diese Arbeit mit einer Zeitzone unterscheidet sich von den Computern Zeitzone.
E. g. aktuelle computer-Zeitzone +02:00, aber ich will einen DateTimeOffset mit offset -4:00.
Ich schon gelesen, viele Fragen hier auf stackoverflow, aber keiner von Ihnen ist mein problem gelöst.
Dass ist, was ich tun muss:
Eingang: "2012-11-20T00:00:00Z"
Ausgabe: DateTimeOffset mit:
- UtcDateTime von 2012-11-20 00:00
- die korrekte Utc-offset für die Zeitzone definiert (01:00 in diesem Beispiel)
- LocalDateTime: 2012-11-20 01:00 (= UtcDateTime + Offset)
Natürlich die Sommerzeit berücksichtigt werden muss.
Bearbeiten:
Um die Dinge noch klarer, bitte versuchen Sie, füllen Sie den folgenden code-snippet:
DateTimeOffset result;
const string dateString = "2012-11-20T00:00:00Z";
var timezone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); //this timezone has an offset of +01:00:00 on this date
//do conversion here
Assert.AreEqual(result.Offset, new TimeSpan(1, 0, 0)); //the correct utc offset, in this case +01:00:00
Assert.AreEqual(result.UtcDateTime, new DateTime(2012, 11, 20, 0, 0, 0)); //equals the original date
Assert.AreEqual(result.LocalDateTime, new DateTime(2012, 11, 20, 1, 0, 0));
InformationsquelleAutor Fabian | 2012-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung, die Sie suchen:
Beachten Sie, dass Sie waren falsch die Prüfung der
.LocalDateTime
Eigenschaft - das ist immer gehen, um zu konvertieren das Ergebnis in der lokalen Zeitzone des Computers. Sie müssen einfach die.DateTime
- Eigenschaft statt.InformationsquelleAutor Matt Johnson
Ist das, was Sie wollen:
DateTime.Parse()
Ist das nützlich für Ihre conversion:
Aktualisiert meine Antwort, hoffe es hilft
Ich bin mir nicht sicher, wie dieser mir helfen kann. Konvertierung des DateTime ist schön und alle, aber wie bekomme ich einen DateTimeOffset?
InformationsquelleAutor Johan Larsson
Ausgabe
Hinzufügen des zweiten Parameters, cultureinfo. hier ist eine Liste sharpertutorials.com/list-of-culture-codes. Beispiel : var fmt = new CultureInfo("en-AU").DateTimeFormat;
Ich habe versucht, aber egal welche CultureInfo ich den DateTimeOffset hat immer ein offset von 00:00:00, das ist nicht das, was ich will!!!
InformationsquelleAutor VRC