Azure中的C#DateTime.Now未报告GMT – 是否可以设置默认时区?

在azure网站上,DateTime.Now总是以UTC格式返回时间,我需要将时区设置为GMT,所以所有时间都是一小时。

我此时无法更改任何代码,因此问题是是否可以在配置中或以编程方式更改默认时区(可以在Global.asax中设置默认文化以确保日期格式正确) 。

首先,GMT与UTC基本相同 – 它没有偏移 。 确切地说,UTC 取代 GMT。 你可能会把它与BST混淆,这是夏令时GMT + 1:00。

一般来说,对时区进行假设是一个坏主意,尤其是在Web应用程序中。 而不是DateTime,你应该使用DateTimeOffset。

幸运的是,最近有一个Azure网站的更改,现在您可以以支持且可靠的方式更改Azure网站的时区 。 来自MSDN博客文章

您需要做的就是添加一个名为WEBSITE_TIME_ZONE的应用程序设置 (通过门户网站或管理API),并将其设置为在HKLM \ Software \ Microsoft \ Windows Nt \ CurrentVersion \ Time下的Windows注册表中定义的时区名称区域\(例如,“AUS东部标准时间”)。

不幸的是,Windows混合了时区并使用名称“GMT标准时间”来指代BST,使用“UTC”来指代GMT / UTC。