Wir behalten alle Zeiten in unserer Datenbank als UTC. mit .net FunktionKonvertierung von UTC in Zeitzone Zeit produziert anderes Ergebnis mit 4.0 und 3.5 SP1
public static DateTime ConvertToLocalTime(DateTime utcTime, string timezoneId)
{
try
{
return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcTime, TimeZoneInfo.Utc.StandardName, timezoneId);
}
catch
{
return new DateTime();
}
}
Es gab ein Problem gemeldet Basierend auf den Standort des Kunden wird die UTC-Zeit in einer lokalen Zeit konvertiert, dass einige Berichte falsche Ergebnisse in Datetime-Feldern produziert haben, und wenn ich es tiefer begann suchen, Ich erkannte, dass der oben genannte Code namens SQL2008 (kompiliert mit .net 3.5) ein anderes Ergebnis erzeugt, wenn er von der mit .NET 4.0 kompilierten Client-Anwendung aufgerufen wird. Das Ergebnis ist in 3.5 falsch und in 4.0 für Chile Zeitzone für Jahr 2015 korrekt, wenn DST das ganze Jahr beobachtet wurde.
Ich kann davon ausgehen, dass dies möglicherweise ein Hotfix fehlgeschlagen speziell für .net 3.5 hergestellt wurde und derzeit fehlt. Aber wenn jemand früher auf dieses oder ein ähnliches Problem gestoßen ist, würde ich mich über zusätzliche Informationen freuen. erste
Danke, dass Sie auf einen Fehler im Code und die detaillierten Hintergrundinformationen hingewiesen haben. Die Verwendung von StandardName ist definitiv falsch. Ich werde die Updates versuchen und hoffentlich den fehlenden fangen. – peregrinus