【发布时间】:2023-03-14 10:35:01
【问题描述】:
这里是新手。实际上,这是有史以来的第一个问题。
我一直在使用 NodaTime(在 ASP.Net MVC 3 C# 上)来绕过不同的时区,并且对结果非常满意。 但... 我想知道是否有办法根据时区获取用户的文化信息 - 即:显示日期/时间。
提前感谢您的帮助!
更新
让我更清楚一点...
我能够使用 jsTimeZoneDetect 和 NodaTime 确定用户时区。它运行良好。 现在,我需要找出用户区域设置信息(日期/时间格式等),以便能够正确显示这些信息。即:基于美国的用户将看到日期为 2013 年 3 月 21 日。
我尝试从 Request.UserLanguages 获取语言环境,但无济于事。 IE 正确返回我的语言环境(en-GB),但 Firefox 和 Chrome 总是返回 en-US。 我还更改了 web.config 并添加了以下元素:
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />
这就是我一直在处理的代码:
var userLanguages = Request.UserLanguages;
CultureInfo ci;
if (userLanguages.Length > 0)
{
try
{
ci = new CultureInfo(userLanguages[0]);
}
catch (CultureNotFoundException)
{
ci = CultureInfo.InvariantCulture;
}
}
else
{
ci = CultureInfo.InvariantCulture;
}
string cultureName = ci.Name /* Always returns en-US */
另外一点,要求用户选择他们的语言环境信息对我来说不是一个选项。即:网站上的DropdownList等
还有什么帮助吗?提前致谢。
更新 2
根据@JonSkeet 的建议,我更改了问题标题和标签以更好地适应我的问题。
更新 3
刚刚发现了一些东西。返回语言(locale)的方式,取决于浏览器,如下:
- Internet Explorer 返回在操作系统设置或浏览器设置中设置的语言。
- Firefox、Chrome、Safari 和 Opera 返回浏览器设置中设置的语言。
考虑到这一点,我什至无法考虑使用这些信息,因为无法保证每个用户都会更改他们的浏览器设置。我唯一可以依赖的信息是来自操作系统设置的信息。
我不知道现在该做什么。
【问题讨论】:
-
你如何让用户的时区开始?我希望通过 HTTP 请求信息更容易获得文化。
-
时区确实不够精细,无法确定文化。有几个时区包含多种文化类型。
标签: asp.net-mvc-3 timezone cultureinfo datetime-format