2013-03-28 14 views
6

Mam proces, który akceptuje wartość daty i czasu ze strefą czasową jako ciąg (dane pochodzą z systemu zewnętrznego). Muszę przetłumaczyć tę datę i czas, który upłynąłby w strefie czasowej maszyn lokalnych.Konwersja czasu z innej strefy czasowej z uwzględnieniem czasu letniego zawiera

Przykładowy kod:

string cetId = "Central European Standard Time"; 
if (timeZone == "CET") 
{ 
    TimeZoneInfo cetZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cetZone, TimeZoneInfo.Local); 
} 
else if (timeZone == "CEST") 
{ 
    TimeZoneInfo cestZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cestZone, TimeZoneInfo.Local); 
} 

Czy muszę zrobić coś konkretnego, czy czas jest CEST (czas środkowoeuropejski letni) zamiast CET (czasu środkowoeuropejskiego), czy .net obiekt TimeZoneInfo obsługiwać ten scenariusz?

Odpowiedz

1

Powinieneś być w porządku.

Mówisz ConvertTime, jakie są obie strefy czasowe (źródło i cel).

Masz konkretny problem z tym lub po prostu prosisz o potwierdzenie?

+0

Byłam zaniepokojona, że ​​czas letni rozpoczyna się w różnych terminach w zależności od strefy czasowej i Martwiłem się, że czasy nie będą tłumaczone poprawnie – Tadhg

0

Od TimeZoneInfo.ConvertTime()

The value of the Kind property of the dateTime parameter must correspond to the sourceTimeZone parameter, as the following table shows. 

tylko dodać, że trzeba uważać na własność „rodzaj” swojej StatusDateTime. W twoim przypadku musi to być "Nieokreślony". Sprawdź sekcję „Uwagi”

0

stworzyłem bibliotekę jakiś czas z powrotem do opakowania tego rodzaju transformacji:

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/UtcTimeZone.cs

może być przydatna, lub może po prostu chcesz podnieść go do dokładnie sprawdź swój kod. Jedną z rzeczy, które obejmuje jest @ Brian's zastrzeżenie - więc ma jawne nazwy metod odnoszące się do właściwości .Kind, które rzucają użyteczne wyjątki, jeśli .Kind jest źle. Potrzeba też trochę na grunt pracy z coraz użytecznych/nazw zwyczajowych/Daylight Time i skróty:

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/TimeZoneShortNameMap.cs

Powiązane problemy