Jeśli wiesz się DateTime
zawiera wartość UTC, można użyć the following:
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
Na przykład w mojej aktualnej aplikacji tworzę znaczniki czasu w mojej bazie danych za pomocą kodu SQL utcnow
, ale po przeczytaniu ich w mojej aplikacji C#, Kind
proeprty jest zawsze Unknown
. Stworzyłem funkcję otoki, aby odczytać znacznik czasu, celowo ustawić jej Kind
na Utc
, a następnie przekonwertować ją na czas lokalny - zasadniczo jak wyżej.
Zauważ, że DateTime.ToLocalTime()
tylko nie wpływa na wartości, jeśli jeden (lub oba) z następujących posiada:
DateTime
„s Kind
nieruchomość jest DateTimeKind.Local
- Lokalna strefa czasowa jest taka, że„nie zmień "jest poprawna konwersja
Myślę, że możemy założyć, że drugi punkt nie jest prawdziwy. Tak więc wydaje się, że właściwość iKnowThisIsUtc
'Kind
jest ustawiona na Local
. Musisz dowiedzieć się, dlaczego to, co Ci dostarcza, uważa, że są one lokalne.
wiesz co strefa czasu jesteś w – elyashiv