文本框中的日期更改格式

时间:2010-06-11 16:25:58

标签: .net culture date-format

我有一个支持4种不同语言的应用程序(asp.net 3.5)。除了其他文化变化外,日期格式必须与报告页面上的当前文化相匹配。

我们设置每个文本框的日期格式,如:

string date = DateTime.Today.ToString("d"); //returns the date portion only

textbox1.Text = date;
textbox2.Text = date;

etc...

当用户选择西班牙语或英国英语时,格式应为dd / mm / yyyy。但是,然后我导航到以mm / dd / yyyy显示的页面。回发后,它显示dd / mm / yyyy。在另一次回发后,它会切换到mm / dd / yyyy格式,然后开启。

我已通过此调试,我发现应用程序的文化正确,日期格式正确地返回给我,但是当它显示时,它显示不正确。

有没有人见过这个或知道发生了什么?

1 个答案:

答案 0 :(得分:0)

如果您只更改一个页面的文化,您应该覆盖问题中的aspx页面的InitializeCulture

protected override void InitializeCulture()
{
    // set your culture, or pick it from maybe the Request object
    string selectedLanguage = "en-US"; 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
    base.InitializeCulture();
}

如果您想为整个应用设置文化,请在global.asax中使用Application_BeginRequest

void Application_BeginRequest(Object sender, EventArgs e)
{
   string selectedLanguage = "en-US"; 
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
   Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
}

您当然会将en-US更改为您的用户的正确文化。