Wrong Azure Website server timezone data

2019-06-28 06:11发布

I'm from Russia, and 1,5 days ago (at 2AM, Oct 26) our timezone (ok, offset of our timezone) has changed - from UTC+4 became UTC+3. Please, don't ask why now - it's out ******* goverment :( But it changed.

My home Win 8.1 machine updated automatically.

But only one (!) of my Azure resources is updated. One Cloud Service updated, while one more Cloud Service and 4 websites are not updated - they are still at UTC+4 offset.

I know, all Azure servers are in UTC in settings, but I speak about TimeZoneInfo data on them.

I'm requesting

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

and this timezone is still

(UTC+04:00) Moscow, St. Petersburg, Volgograd

while my home machine is in

(UTC+03:00) Moscow, St. Petersburg, Volgograd (RTZ 2)

AFAIK, this depends on system updates on server - new timezone data must arrive prior to any time changes can actually happen. But why servers are not updated?

My one CloudService as working properly now, showing correct timezone info (can't show it), so at least one server is updated correctly, while others are not.

I made small website to test this: http://timezonetestrussia.azurewebsites.net/ (source: https://github.com/justdmitry/AzureTimeZoneTest )

It shows TimeZoneInfo.Local info and from "Russian Standard Time". At this moment, it shows this in 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 

While on my local machine it shows:

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条回答
孤傲高冷的网名
2楼-- · 2019-06-28 06:39

I am researching if Azure can be updated with the new time zones, but I don't believe it is directly possible. Or rather, since you aren't given access to the OS that your Azure Web Site runs on, you wouldn't be able to apply the updates yourself. You will likely have to wait until the next major Azure Guest OS update. I will update this post if I learn otherwise.

If you can rework your program, you might instead consider using Noda Time. It has its own time zone data, which comes from the IANA time zone database. Be sure to use an updated .NZD file, as the Russian changes are covered in IANA 2014f or greater.

查看更多
唯我独甜
3楼-- · 2019-06-28 06:46

The most likely reason is that different services run on different Guest OS "versions". You likely have automatic Guest OS updates enabled (osVersion="*") which means that Azure is free to update the Guest OS. Different Guest OS versions withing the same family include different sets of updates. Things like rules for timezone adjustments are typically distributed using updates too.

Look at guest OS updates feed http://sxp.microsoft.com/feeds/3.0/msdntn/WindowsAzureOSUpdates - they cannot release a new OS to all users for months already. The process was started multiple times, they updates some of the users and then stopped the process. It's likely that your "proper working" service got the OS updated and the other services have not got the OS updated. You can perhaps verify this using Management API http://msdn.microsoft.com/en-us/library/azure/ee460804.aspx Get Deployment call.

查看更多
登录 后发表回答