Accordingtomultiplepostings, Microsoft umożliwił korzystanie z ustawienia aplikacji - WEBSITE_TIME_ZONE
- w celu kontrolowania strefy czasowej serwera WWW.Zmiana strefy czasowej w internetowych aplikacjach Azure Nie działa w przypadku funkcji DateTimeOffset.Now?
Aby to wypróbować, ustawiam tę wartość na "Wschodni czas standardowy", który jest moją lokalną strefą czasową.
Na stronie ASP.NET MVC Razor I dodaje następujący kod:
DateTime.Now: @DateTime.Now
DateTimeOffset.Now: @DateTimeOffset.Now
DateTime.UtcNow: @DateTimeOffset.UtcNow
kiedy wpadłem to ostatnia noc w 5:10:07 pm Eastern Standard Time, dało następujący wynik:
DateTime.Now: 6/18/2015 5:10:07 PM
DateTimeOffset.Now: 6/18/2015 5:10:07 PM +00:00
DateTime.UtcNow: 6/18/2015 9:10:07 PM
Jak widać, ustawienie poprawnie pozwoliło DateTime.Now
na zwrócenie prawidłowej wartości w mojej strefie czasowej, a nie na UTC, tak jak zwykle na stronach Azure Websites/Web Apps. DateTime.UtcNow
zawsze zwracał poprawną wartość z oczywistych powodów.
Jednak DateTimeOffset.Now
zwraca lokalny czas, ale z przesunięciem +00:00
- prawie tak, jakby zegar został zmieniony zamiast strefy czasowej. Dzieje się tak, mimo że documentation mówi (Kopalnia nacisk):
Pobiera obiekt datetimeoffset, który jest ustawiony na bieżącą datę i czas na bieżącym komputerze, ze skorygowanym ustawiony na czas lokalny offset od Coordinated Universal Time (UTC).
Więc co się dzieje, że skutki ustawień WEBSITE_TIME_ZONE
DateTime.Now
ale to nie wpływa DateTimeOffset.Now
? I czy jest jakiś sposób, żeby to obejść?
Nie chcę zmieniać strefy czasowej na serwerze, jako punktu wyjaśniającego. Pracujemy nad odpowiednim niezależnym rozwiązaniem dla strefy czasowej. Ale wciąż jestem ciekawy, dlaczego tak się dzieje.
Naprawdę trzeba zmienić strefę czasową serwera? Starałbym się tak bardzo, jak to możliwe, unikać tego wymogu. Zgadzam się, to dziwne zachowanie DateTimeOffset.Now, pamiętajcie ... –
Zastanawiam się, wyjaśniając, że w OP. Wolałbym nie zmieniać strefy czasowej serwera. Właśnie podczas eksploracji opcji, przebiegłem ten i nie rozumiałem jak to działało (albo dlaczego to nie działa tak, jak myślałem). Pomyślałem więc, że spróbuję uzyskać wyjaśnienie. – Tim
Ma sens - i jestem za eksperymentowaniem z rzeczami, których naprawdę nie chciałbyś robić :) –