如何在ASP.NET中全局设置date格式?

如何在ASP.NET中全局设置date格式?

我的本地机器和服务器的“区域设置”设置为“英语(新西兰)”。

当我用dd/MM/yyyy格式化一个date时,例如我希望今天看到19/11/2008

直到最近,这是我从本地机器和服务器获得的。

就在最近,由于一些神秘的原因,我们的本地机器已经发生了轻微的变化。 尽pipe仍然设置为“英语(新西兰)”,date分隔已经从/- ! 仍然显示“英语(新西兰)”和/date分隔的服务器上没有发生同样的变化。

所以现在我的本地机器,格式dd/MM/yyyy我得到19-11-2008而不是19/11/2008

这有点令人不安。

到目前为止,我所能看到的唯一方法就是跳过斜杠并将格式设置为dd\/MM\/yyyy 。 它似乎工作,但似乎并不是理想的解决scheme。

任何人都可以请帮忙?

注:这是一个内联网应用程序,我不关心真正的全球化。 我只是想修复date格式,并没有改变我。

您可以更改Global.asax文件中的当前线程文化,并覆盖date格式,例如:

 using System.Globalization; using System.Threading; //... protected void Application_BeginRequest(Object sender, EventArgs e) { CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy"; newCulture.DateTimeFormat.DateSeparator = "-"; Thread.CurrentThread.CurrentCulture = newCulture; } 

在web.config中, 根据以下文档设置标签

 <system.web> <globalization culture="en-NZ" uiCulture="en-NZ"/> </system.web> 

一个好的方法是configurationWeb.Config,date格式出现在一个aspx的所有组件中

 <system.web> <globalization uiCulture="en" culture="en-NZ" /> </system.web> 

你可以设置你的文化没有操纵:

 using System.Globalization; using System.Threading; 

using System.Globalization; using System.Threading;

// …
protected void Application_BeginRequest(Object sender,EventArgs e)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en-NZ”);
}

对于格式string,格式字符/实际上并不像您所期望的那样parsing为文字“/”。 而是将其parsing为在区域设置中configuration的当前date时间分隔符。 尝试更改DateTimeFormatInfo.DateSeparator属性。

有关更多信息,请参阅: http : //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

这是一个旧post,但我认为在这里提到它可能是有用的,我的问题是像OP所要求的东西,但解决scheme是,文化在IIS中,而不是从控制面板中更改。

IIS有自己的文化select,默认情况下会遵循当地的电脑文化。 但是由于某种原因,它变成了一种不同的文化,我开始得到那些奇怪的date格式。

你可以在这里寻找更多的答案。