【发布时间】:2019-09-07 19:17:43
【问题描述】:
我们有一个在 .Net Framework 4.7.1 上运行的网络作业,它执行从 DateTimeOffset.UtcNow 到智利大陆时间的日期时间转换(如果我没记错“太平洋标准时间”的话)。
在本地(在 Windows 10 机器上)运行此 Web 作业时,它可以正常工作并执行应用 DST 的转换,但是当部署到 Azure 应用服务时,它不再起作用,并且最终的 DateTime 总是在一小时后比现在的官方时间。
我最初从TimeZoneInfo.ConvertTimeBySystemTimeZoneId切换到TimeZoneInfo.ConvertTimeFromUtc的假设是第一个不考虑夏令时但没有用;
然后我尝试切换“错误”我自己的 PC,将我的时区更改为“UTC_dstoff”并在“调整日期/时间”菜单中禁用“自动调整夏令时”和“自动设置时间”选项' 但它在本地仍然可以正常工作;
我尝试的最后一件事是使用环境变量 WEBSITE_TIME_ZONE 将时区更改为 App Service 为“太平洋 SA 标准时间”,但这并不是决定性的。我会说它最初似乎有效,但在时区进行了更多更改后,它又开始增加一小时。
这可以用以下几行重现:
var timeZoneId = "Pacific SA Standard Time";
var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
var dateTimeOffset = DateTimeOffset.UtcNow;
var localTime = TimeZoneInfo.ConvertTimeFromUtc(dateTimeOffset.DateTime, timeZone);
我希望函数 TimeZoneInfo.ConvertTimeFromUtc 在本地和 Azure 应用服务中选择具有 DST 的时区时正确应用 DST。相反,它似乎在 Windows 10 中正常运行,但在 Azure 应用服务中随机运行。
【问题讨论】:
标签: c# azure azure-webjobs dst .net-4.7.1