Niestety, każda koncepcja „aktualnego” strefy czasowej jest związana z ustawieniami systemu operacyjnego urządzenia, które kod jest uruchomiony. Istnieje kilka apisów Win32 do zmiany strefy czasowej, ale nie polecam ich używania. Nie tylko nie są "bezpieczne dla wątków", ale również nie są "bezpieczne w obróbce". Ustawienie strefy czasowej wpływa na wszystko, co dzieje się na urządzeniu.
Powiedziałbym, że byłbym ciekawy, jaki jest twój przypadek użycia. Jeśli jesteś w stanie ustawić strefę czasową dla danego wątku, prawdopodobnie nie możesz w ogóle polegać na ustawieniach lokalnych. Najprawdopodobniej możesz użyć metod konwersji pod numerem TimeZoneInfo
.
Załóżmy na przykład, że szukasz bieżącego czasu w innej strefie czasowej. Być może szukasz możliwości aby to zrobić:
using (TimeZone.CurrentTimeZone = ... )
{
var now = DateTime.Now;
}
Ale zamiast tego należy po prostu przekonwertować z UTC w stosownych przypadkach:
var now = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
DateTime.UtcNow, "some other timezone id");
Nie jesteśmy pożądanym funkcje serwisu NET, jesteśmy solidne odpowiedzi na solidną stronę z pytaniami. Obsługa stref czasowych nie jest trywialna w najlepszym momencie, a dodanie warstwy złożoności strefy czasowej na wątek wymaga tylko kłopotów. – Petesh
@Petesh Nie chciałem zapytać, dlaczego tak naprawdę. Zastanawiałem się, czy jest to możliwe w jakiś sposób. –
Nic nie stoi na przeszkodzie, aby utworzyć lokalny wątek dla stref czasowych, po prostu nie użyje go nic poza kodem. Powinieneś spojrzeć na ['ThreadLocal' Class] (http://msdn.microsoft.com/en-us/library/dd642243.aspx) w .NET dla trywialnego sposobu implementacji. –
Petesh