获取DateTime CultureInfo转换的Web用户位置

时间:2015-02-26 03:38:13

标签: datetime azure asp.net-mvc-5 utc cultureinfo

我正在编写一个MVC 5互联网应用程序,并正在将此应用程序部署到Azure。所有DateTime值都以UTC格式存储。

如何将这些值显示为Web用户的本地时间的最佳方式是什么?我知道如何将UTC DateTime转换为LocalTime,但我不确定将这些DateTime值显示给使用Azure网站的国际用户的最佳方式。

我做了一些研究,并且我已经阅读了以下内容:

  1. 获取HttpRequest.UserLanguages字符串数组。
  2. 检索其第一个元素。第一个元素表示用户的默认或首选语言和区域。
  3. 通过调用CultureInfo.CultureInfo(String,Boolean)构造函数来实例化表示用户首选文化的CultureInfo对象。
  4. 使用CultureInfo对象转换UTC DateTime。
  5. 有更好/更简单的方法吗?这是否必须在每个控制器/操作结果中完成,还是可以在一个地方完成?有没有人写过一些我可以使用的代码,而不是编写我自己的代码?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

将此添加到您的网络配置:

<configuration>
  <system.web>
    <globalization culture="auto:en-US" uiCulture="en-US" />
  </system.web>
</configuration>

如果您没有计划使用本地化资源,那么您可以省略配置的uiCulture部分。

  

此设置会自动将ASP.NET请求切换到浏览器   客户的语言,如果找到匹配。如果浏览器没有   提供一种语言或语言无法与.NET之一匹配   安装了文化,使用了后备值 - 在本例中为en-US。

     

此设置应用ASP.NET请求线程的CurrentCulture和   的UICulture。在ASP.NET中很早就切换了文化   HttpApplication生命周期,因此您可以看到所选的文化应用和   甚至可以在Application_BeginRequest中使用,然后在整个   其余的请求周期。

The full article about this