【发布时间】:2018-08-14 08:37:44
【问题描述】:
我有一个托管在 Azure(美国)上的 WebAPI 应用程序,我无法完全控制服务器。
关于显示日期的全球化,我决定将其固定用于我的国家 (BR),使用 ID E. South America Standard Time。
以下方法效果很好:
TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time");
该方法以某种方式检查指定的日期IsDaylightSavingTime 是否,以确保它显示正确的日期时间。完美运行!
但今年总统宣布巴西的夏令时不会从 10 月 3 日星期日开始,而是从现在开始的 11 月。
此方法正在考虑,它从 2018 年 10 月 21 日开始,已更改。如果一直这样,我肯定会遇到问题。
我发现IsDaylightSavingTime 属于 System 命名空间,这让我相信问题出在 Windows 配置中。
我不知道微软是否能够在所有 Azure 服务器上自动更改它,或者我是否能够以某种方式手动更改它。
*Obs:我不想这样做来修复它,如果微软更新夏令时会有更多问题:
if (date > XXXX && date < XXXX) date.AddHours(1);
【问题讨论】:
-
Google 至少部分更新了这一点。无论如何,每个人都必须在 10 月之前实施这一改变——我认为全世界都不会有人围观等待是否有人在某个地方改变 DST 规则,以便他们可以立即实施。
-
夏令时更改通过 Windows 更新交付,请确保在此计算机上启用它。并且TimeZoneInfo有意缓存数据,确保回收应用池。
-
@oerkelens 有道理,它不会在公告中自动更改(那是 3 个月前),但我担心它是否会在某个时候自动更新,或者是否需要手动输入。
-
@HansPassant 坦克你,我会尽量确保服务器正确获取 WindowsUpdatePackages。不知道缓存是否会出问题,但知道也很好。