2013-03-20 23 views
0

新手在这里。其实,有史以来第一个问题。如何根据用户的时区确定用户的网络文化?

我一直在使用NodaTime(在ASP.Net MVC 3 C#上)绕过不同的时区,我对结果非常满意。 但是... 我想知道是否有办法根据时区获取用户的文化信息 - 即:显示日期/时间。

在此先感谢您的帮助!

UPDATE

让我在这更清晰......

我能够确定使用jsTimeZoneDetect和NodaTime用户的时区。它的工作完美。 现在,我需要的是找出用户区域信息(日期/时间格式等),以便能够正确显示这些信息。即:基于US的用户会将日期视为3/21/2013。

我试图从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

刚刚发现了一些东西。语言(语言环境)返回的方式取决于浏览器,如下所示:

  • Internet Explorer返回在OS设置或浏览器设置的语言。
  • Firefox,Chrome,Safari和Opera会返回浏览器设置中设置的语言。

考虑到这一点,我甚至不会考虑使用这些信息,因为没有办法保证每个用户都会改变他们的浏览器设置。我唯一可以信赖的信息是来自操作系统设置的信息。

我不知道现在该做什么。

+1

如何获取用户的时区?我希望通过HTTP请求信息可以更容易地获得文化。 – 2013-03-20 17:24:04

+1

时区确实不足以确定文化。有几个时区包含多种文化类型。 – jmoerdyk 2013-03-20 17:28:59

回答

0

要回答这个问题的提出,无论要求澄清...

在1.0,我们没有任何可用的地理信息。在1。1,我们正在公布来自zoneinfo.tab的信息,该信息将位置与每个时区(或者至少大部分时区)相关联,包括该国家。它没有达到完整的文化信息(它不区分加拿大法语和加拿大英语,或者瑞士语言中使用的各种语言),但它给你一些一些的想法。您可以通过TzdbDateTimeZoneSource.GeoLocations访问信息。 (它只适用于TZDB)。

当然,1.1还没有发布 - 但我们希望在接下来的几周内这样做,几乎可以肯定没有任何大的API更改。

虽然我仍然建议通过HTTP请求来检测文化。

+0

Hi @JonSkeet。感谢您的快速回复。 这是一段代码: 'code' var zone1 = tzdb [“UTC UTC”]; var ldt1 = new LocalDateTime(2013,3 20,8,0); var zdt1 = zone1.AtLeniently(ldt1); var zone2 = tzdb [“America/Los_Angeles”]; var zdt2 = zdt1.ToInstant()。InZone(zone2); var ldt2 = zdt2.LocalDateTime; 'code' – melancia 2013-03-20 17:35:25

+0

@MelanciaUK:目前尚不清楚代码与你的问题有什么关系,尽管......该代码根本不使用文化,也没有解释你如何推断​​用户的时区。 – 2013-03-20 17:36:18

+0

我现在需要的唯一信息是日期/时间格式。如您所指出的那样,将研究有关HTTP请求的内容。干杯 – melancia 2013-03-20 17:36:43