我来自俄罗斯,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
答案 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获取部署调用来验证这一点。