正在获取用于DateTime CultureInfo转换的web用户位置



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

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

我做了一些研究,我读到以下可以做:

  1. 获取HttpRequest.UserLanguages字符串数组
  2. 检索其第一个元素。第一个元素指示用户的默认或首选语言和地区
  3. 通过调用CultureInfo.CultureInfo(String,Boolean)构造函数,实例化表示用户首选区域性的CultureInfo对象
  4. 使用CultureInfo对象转换UTC DateTime

有更好/更容易的方法吗?这是否必须在每个控制器/动作结果中完成,或者可以在一个地方完成?有没有人写了一些我可以使用的代码,而不是自己写代码?

提前谢谢。

将其添加到您的web配置中:

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

如果您不打算使用本地化资源,那么可以省略配置中的uiCulture部分。

此设置自动将ASP.NET请求切换到浏览器如果可以找到匹配项,则使用客户端的语言。如果浏览器没有提供一种语言,或者该语言无法与.NET中的一种匹配安装的区域性,则使用回退值–在本例中为美国。

此设置应用ASP.NET请求线程的CurrentCulture和UICulture。区域性在ASP.NET中很早就发生了切换HttpApplication生命周期,因此您可以看到应用的选定区域性即使在Application_BeginRequest中也可用,然后在请求周期的剩余时间。

关于这个的完整文章

最新更新