Par exemple, lorsque j'essaie de faire ce qui suit.
TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time")
J'obtiens l'erreur que la TimeZone
n'est pas disponible sur l'ordinateur local. Quand je lance ceci localement cela fonctionne, mais là je l'exécute sur des fenêtres. Lorsqu'il est déployé, il s'exécute sur une machine Unix sous Nginx. Je peux voir que FindSystemTimeZoneById
regarde dans le mauvais dossier quand il s'agit de Unix. Y a-t-il un moyen de faire fonctionner cela?
.Net Core utilisant le fuseau horaire du système. Malheureusement, Windows et Linux ont un système de fuseau horaire différent. Maintenant, vous avez deux moyens:
Pouvez-vous s'il vous plaît essayer cela?
TimeZoneInfo easternZone;
try
{
easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
}
catch (TimeZoneNotFoundException)
{
easternZone = TimeZoneInfo.FindSystemTimeZoneById("America/New_York");
}
Vous pouvez consulter la liste des fuseaux horaires IANA ici https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Si vous voulez essayer un fuseau horaire Windows puis effectuer un repli sur un fuseau IANA si celui-ci n'existe pas:
var tzi = TimeZoneInfo.GetSystemTimeZones().Any(x => x.Id == "Eastern Standard Time") ?
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time") :
TimeZoneInfo.FindSystemTimeZoneById("America/New_York");