如何检测执行线程的当前文化?

时间:2009-06-15 11:57:04

标签: c# asp.net-2.0 culture

我有一个很好的功能设置,用于格式化日期 Leading Zero Date Format C#

但事实证明,在我们的农场,我们有一些刀片运行在英国语言环境中,有些刀片运行在美国语言环境中,这取决于它崩溃的程度。

那么我所追求的是如何测试当前的服务器区域设置?

像...一样的东西。

if(Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName == "GB"){
...

}
else
{

..otherstatement
}

TA

4 个答案:

答案 0 :(得分:4)

Date now = DateTime.Now;
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(now.ToString("d", ci));

答案 1 :(得分:2)

您应该将所需的文化传递给所有格式化函数(通常是InvariantCulture)。

或者,您可以在页面like so设置文化。该代码也可以放在asax.cs文件中的Application BeginRequest覆盖中,以影响所有页面。

答案 2 :(得分:1)

通常我们go with UTC而不是特定于语言环境的代码。

答案 3 :(得分:1)

据我所知,测试CurrentCulture是达到你要求的唯一方法。但是,我强烈建议将日期保留为DateTime,直到它们在用户界面中显示,而服务器功能中的if语句不依赖于日期格式。

我通常会尝试将日期格式设置为尽可能靠近用户。