【问题标题】:Convert utc to local datetime将UTC转换为本地日期时间
【发布时间】:2011-04-25 17:25:56
【问题描述】:

我在 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 日期获得正确的本地时间。我已经检查了其他主题,但它没有用。

【问题讨论】:

    标签: c# datetime localization azure datetime-conversion


    【解决方案1】:

    无论数据中心位于何处,Microsoft Azure 都将 UTC 时间设置为本地时间。如果要转换为用户浏览器的本地时间,则需要以编程方式进行转换。

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

    更多信息请访问。

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

    【讨论】:

      【解决方案2】:

      正如@John 所指出的,您必须在客户端执行此操作。如果是 Web 应用程序,您可以通过这种方式将 UTC 转换为本地时间:http://blogs.msdn.com/b/marcelolr/archive/2008/06/04/javascript-date-utc-and-local-times.aspx

      【讨论】:

        【解决方案3】:

        这是我发现的适合我的方法:

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

        即使是西欧标准时间,它仍然会考虑夏令时。 (我可以很好地使用 GMT/BST)

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

        【讨论】:

          猜你喜欢
          • 2012-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-29
          • 1970-01-01
          • 1970-01-01
          • 2019-06-21
          相关资源
          最近更新 更多