将UTC时间转换为本地时间

4
我在 web.config 中设置了一个全球化选项,如下所示:
<globalization culture="de-DE" uiCulture="de-DE" />

在一个普通的 aspx 页面上,我会输出类似以下内容:
var a = DateTime.UtcNow.ToLocalTime().ToString();
var b = DateTime.UtcNow.ToString();
var c = DateTime.Now.ToLocalTime().ToString();
var d = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.UtcNow).ToString();

结果:a、b、c、d的值全部相同(例如,01.01.2001 17:00:00),但我期望本地时间和UTC时间不同。
我在这里错过了什么,如何从UTC日期获取正确的本地时间。我已经检查了其他主题,但它没有起作用。
3个回答

6

微软Azure将使用协调世界时(UTC)作为本地时间,无论数据中心位于何处。如果您想将其转换为用户浏览器的本地时间,则需要通过编程进行转换。

由于Azure是全球服务,实际上不存在本地时间,为了在其全球数据中心之间保持一致,使用标准时间是有意义的。

更多信息请参见。

http://michaelcollier.wordpress.com/2010/05/22/hey-azure-what-time-is-it/


2
如@John所指出的,你必须在客户端进行操作。如果是一个网络应用程序,你可以通过以下方式将UTC时间转换为本地时间:broken link

0

这是我发现对我有用的内容:

   TimeZoneInfo de = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
   var localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, de);

尽管现在是西欧标准时间,但它仍然考虑夏令时。(我已经成功地将其与GMT/BST配合使用)

我曾希望ToLocalTime在转换时会考虑CultureUI/Culture全球化设置,但事实并非如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接