According to multiple postings, Microsoft enabled the ability to use an Application setting - WEBSITE_TIME_ZONE - to control the timezone of the web server.
To try this, I set this value to "Eastern Standard Time" which is my local time zone.
On an ASP.NET MVC Razor page, I added the following code:
DateTime.Now: @DateTime.Now
DateTimeOffset.Now: @DateTimeOffset.Now
DateTime.UtcNow: @DateTimeOffset.UtcNow
when I ran this last night at 5:10:07pm Eastern Standard Time, it gave the following output:
DateTime.Now: 6/18/2015 5:10:07 PM
DateTimeOffset.Now: 6/18/2015 5:10:07 PM +00:00
DateTime.UtcNow: 6/18/2015 9:10:07 PM
As you can see, the setting correctly allowed DateTime.Now to return the correct value in my timezone rather than UTC like Azure Websites/Web Apps usually do. DateTime.UtcNow has always returned the correct value for obvious reasons.
However, DateTimeOffset.Now returns the local time, but with an offset of +00:00 - almost as if the clock was changed rather than the timezone. This occurs even though the documentation says (emphasis mine):
Gets a DateTimeOffset object that is set to the current date and time on the current computer, with the offset set to the local time's offset from Coordinated Universal Time (UTC).
So what is happening that the WEBSITE_TIME_ZONE setting impacts DateTime.Now but it does not impact DateTimeOffset.Now? And is there any way I can get around that?
As a point of clarification, I don't really want to change the time zone on the server. We are working on a proper timezone independent solution. But I'm still curious why this happens the way it does.
WEBSITE_TIME_ZONEdoesn't seem to be changing the time zone at all I've set the time zone to GMT, but I am still seeing UTC with adjusted time by an hour to match what the time would be in GMT:{"Id":"UTC","DisplayName":"(UTC) Coordinated Universal Time","StandardName":"Coordinated Universal Time","DaylightName":"Coordinated Universal Time","BaseUtcOffset":"00:00:00","AdjustmentRules":null,"SupportsDaylightSavingTime":false}