我正在编写一个MVC 5互联网应用程序,并将该应用程序部署到Azure。所有DateTime值都以UTC格式存储。
将这些值显示为网络用户的本地时间的最佳方式是什么?我知道如何将UTC DateTime转换为LocalTime,但不确定向使用Azure网站的国际用户显示这些DateTime值的最佳方式。
我做了一些研究,我读到以下可以做:
- 获取HttpRequest.UserLanguages字符串数组
- 检索其第一个元素。第一个元素指示用户的默认或首选语言和地区
- 通过调用CultureInfo.CultureInfo(String,Boolean)构造函数,实例化表示用户首选区域性的CultureInfo对象
- 使用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中也可用,然后在请求周期的剩余时间。
关于这个的完整文章