错误的Azure网站服务器时区数据

时间:2014-10-27 14:45:02

标签: azure timezone azure-web-sites

我来自俄罗斯,1.5天前(10月26日凌晨2点)我们的时区(确定,我们的时区偏移)已经改变 - 从UTC + 4变为UTC + 3。拜托,不要问为什么现在 - 它出来了*******政府:(但它改变了。

我的主页Win 8.1机器自动更新。

但是只更新了我的Azure资源中的一个(!)。一个云服务已更新,另外一个Cloud Service和4个网站未更新 - 它们仍然处于UTC + 4偏移量。

我知道,所有Azure服务器都采用UTC设置,但我在其上谈论TimeZoneInfo数据。

我正在请求

var tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")

此时区仍然是

  

(UTC + 04:00)莫斯科,圣彼得堡,伏尔加格勒

当我的家用机器在

  

(UTC + 03:00)莫斯科,圣彼得堡,伏尔加格勒(RTZ 2)

AFAIK,这取决于服务器上的系统更新 - 新的时区数据必须在任何时间实际发生变化之前到达。但为什么服务器没有更新?

我的一个CloudService现在正常工作,显示正确的时区信息(无法显示),因此至少有一个服务器正确更新,而其他服务器则没有。

我制作了一个小网站来测试这个:http://timezonetestrussia.azurewebsites.net/(来源:https://github.com/justdmitry/AzureTimeZoneTest

显示TimeZoneInfo.Local信息和“俄罗斯标准时间”。此时,它在Azure中显示:

Id
    Russian Standard Time
DisplayName
    (UTC+04:00) Moscow, St. Petersburg, Volgograd
StandardName
    Russian Standard Time
DaylightName
    Russian Daylight Time
BaseUtcOffset
    04:00:00
SupportsDaylightSavingTime
    True
DateTimeOffset.UtcNow
    10/27/2014 2:37:58 PM +00:00
TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tz)
    10/27/2014 6:37:58 PM +04:00 

在我的本地计算机上显示:

Id
    Russian Standard Time
DisplayName
    (UTC+03:00) Moscow, St. Petersburg, Volgograd (RTZ 2)
StandardName
    Russia TZ 2 Standard Time
DaylightName
    Russia TZ 2 Daylight Time
BaseUtcOffset
    03:00:00
SupportsDaylightSavingTime
    True
DateTimeOffset.UtcNow
    27.10.2014 14:33:50 +00:00
TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tz)
    27.10.2014 17:33:50 +03:00 

2 个答案:

答案 0 :(得分:0)

我正在研究是否可以使用新时区更新Azure,但我不相信它是直接可行的。或者更确切地说,由于您无权访问运行Azure网站的操作系统,因此您无法自己应用the updates。您可能需要等到下一个主要的Azure Guest OS更新。如果我不这样做,我会更新这篇文章。

如果您可以重新编写程序,则可以考虑使用Noda Time。它有自己的时区数据,来自IANA time zone database。请务必使用updated .NZD file,因为俄语更改为covered in IANA 2014f or greater

答案 1 :(得分:0)

最可能的原因是不同的服务在不同的客户操作系统“版本”上运行。您可能启用了自动客户操作系统更新(osVersion="*"),这意味着Azure可以免费更新来宾操作系统。具有相同系列的不同客户OS版本包括不同的更新集。时区调整规则等内容通常也会使用更新进行分发。

查看来宾操作系统更新供稿http://sxp.microsoft.com/feeds/3.0/msdntn/WindowsAzureOSUpdates - 他们几个月内无法向所有用户发布新操作系统。该过程多次启动,它们会更新一些用户,然后停止该过程。您的“正常工作”服务可能会更新操作系统,而其他服务尚未更新操作系统。您可以使用Management API http://msdn.microsoft.com/en-us/library/azure/ee460804.aspx获取部署调用来验证这一点。