Es ist ein Fehler Umwandlung in Datetime UTC Datetime wenn die Art Utc ist. Die origDateTime kommt vom Webservice, also habe ich keine Kontrolle über den Inhalt oder das Format. In den meisten Fällen ist es mit Art kommt = (hart auch die Zeit, in Utc ist) unspezifisch und dann die Konvertit zu Datetime warf Ausnahme, dass es funktioniert, aber in seltenen Fällen die Art = Utc und dann: „Die UTC-Offset für Utc Datetime-Instanzen 0. \ r \ nParameter Name sein muss: Offset“ Wie soll ich es lösen?Fehler von Datetime UTC Umwandlung in Datetime wenn Art Utc ist
try {
//cause error !!!!
DateTime databaseUtcTime = DateTime.Parse("4/2/2016 6:25:20 PM");
var localTimeTemp = databaseUtcTime.ToLocalTime();
DateTime origDateTime = localTimeTemp.ToUniversalTime();
//this is working
//DateTime origDateTime = DateTime.Parse("4/2/2016 6:25:20 PM");
string timeZoneName = "Pacific Standard Time";
TimeZoneInfo localTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
DateTimeOffset localTime = new DateTimeOffset(origDateTime, localTimeZone.GetUtcOffset(origDateTime));
return localTime;
}
catch (Exception ex) {
string msg = ex.Message;
return null;
}
Datatime Parse konvertiert automatisch zu UTC Zeitzoneneinstellungen, so gibt es keine Notwendigkeit zu konvertieren ist. Die Verbindung zu einer Datenbank verwendet auch automatisch die UTC-Zeit, daher ist Ihr Code nicht sehr sinnvoll. Verwenden Sie Zeitzonen-Offsets nur, wenn Sie Daten eingeben, die in einer anderen Zeitzone gesammelt wurden, oder wenn Sie Zeit in einer anderen Zeitzone anzeigen möchten. Die Funktionen der Net-Bibliothek speichern die Zeit auf dem Computer als eine Zahl in UTC und konvertieren die UTC automatisch bei der Eingabe oder Ausgabe. – jdweng
Ich muss jedes Datetime zu einem Datetimeoffset mit verschiedenen Zeitzonen (entsprechend einem anderen Feld) konvertieren, um in verschiedenen Zeitzonen zu zeigen. Xavier Antwort löste das Problem. Danke. – user2455595