Stellen wir uns vor, dass dieses kleine Programm läuft:DateTime.Now vs Systemzeit
while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName}/{TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}
Wenn ich die Systemzeitzone zu ändern, wenn das Programm die App läuft nicht um die Änderung zu sehen. Die Zeitzone und die Zeit sind so, als hätte sich die Zeitzone nicht geändert.
Damit die App die neue Zeit und Zeitzone anzeigt, muss ich die App neu starten.
Wenn ich die Systemzeit ändere, wird die Zeitänderung sofort übernommen.
Es wäre toll, wenn Sie mich mit drei Fragen helfen könnte:
- ist dies überall dokumentiert?
- Warum wird die Zeitzonenänderung nicht während der Ausführung der Anwendung aufgehoben?
- kann ich alles tun, damit die App Änderungen der Zeitzone während der Ausführung erkennt?
Hier ist eine kleine Screenshot .NET app Zeit anders als das Betriebssystem zu zeigen:
BTW. Unter Windows IOT auf Raspberry Pi zeigt mein Experiment, dass wenn ich die App neu starte, es die neue Zeitzone anzeigt, aber die 'alte' Zeit. Die neue Uhrzeit wird nach dem Neustart des Systems übernommen.
Wissen Sie auch, wie Sie erreichen, was TimeZoneInfo.ClearCachedData in Universal Windows macht? Die Methode ist nicht verfügbar. – mayu
In Universal Windows müssen Sie diese Methode über Reflection aufrufen (und testen Sie es auf Ihrem Gerät funktioniert) - es wurde privat gemacht – mayu