我们位于英国,并为Azure部署了一系列Web服务。其中一个每5分钟自动刷新一次,并显示“最后更新为hh:mm:ss”消息。 这似乎没有考虑夏令时,因为显示的时间比当地时间晚一个小时。我们怀疑它正在使用UTC。我们尝试过设置
<globalization uiCulture="en" culture="en-GB"/>
在web.config中并以编程方式没有成功。 是否有一个更简单的解决方案来显示正确的本地时间,而不是确定DST偏移并在'DateTime.Now()的每个实例上应用它?'
提前感谢您的帮助。
答案 0 :(得分:1)
在“应用程序设置”下的Azure门户中,添加名为WEBSITE_TIME_ZONE
且值为W. Europe Standard Time
的环境变量。
有关其他值,请参阅:https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx
答案 1 :(得分:0)
是 - Azure在UTC时间运行。请阅读DateTime.ToLocalTime Method和TimeZoneInfo.ConvertTime Method,了解如何获取已知时区的本地时间。
答案 2 :(得分:0)
@viperguynaz是正确的,所有Azure都在UTC上运行。如果您在Azure中运行,那么您应该保持它在UTC中运行,而不是试图绕过它,因为有些事情表现得并不好。相反,作为软件开发人员,您应该将该功能添加到您的应用程序中以遵守时区并处理在UTC上运行的数据和运行的服务。切勿使用DateTime.Now
,而应始终使用DateTime.UtcNow
。
有关详细信息,请参阅this question。
答案 3 :(得分:0)
我们有类似的英国特定情况,我们只需在一行“提升简单”启动任务中使用时区实用程序tzutil设置时区:
tzutil /s "GMT Standard Time"
我们没有看到任何问题,时间戳总是符合我们的期望。这似乎比确保代码中的每个DateTime交互都能使本地时间/时区知晓更简单。
我相信此实用程序仅包含在Windows Server 2008 R2及更高版本的映像中。