如何在ASP.NET中全局设置日期格式?
我的本地计算机和服务器的“区域设置”设置为“英语(新西兰)”。
当我使用dd/MM/yyyy
格式化日期时,我希望今天能看到19/11/2008
。
直到最近,这才是我从本地机器和服务器上获得的。
就在最近,由于一些神秘的原因,我们的本地机器变得如此轻微。尽管仍设置为“英语(新西兰)”,但日期分隔符已从/
更改为-
!仍然显示“英语(新西兰)”和日期分隔符/
的服务器上没有发生相同的更改。
现在,对于我的本地计算机,对于格式dd/MM/yyyy
,我得到19-11-2008
而不是19/11/2008
。
这有点令人不安。
到目前为止,我能看到的唯一方法是逃避斜杠并将格式设置为dd\/MM\/yyyy
。它似乎有效,但它似乎不是理想的解决方案。
有人可以帮忙吗?
注意:这适用于Intranet应用程序,我不关心真正的全球化。我只想修改日期格式,而不是让我改变它。
答案 0 :(得分:106)
您可以更改Global.asax文件中的当前线程文化,并覆盖日期格式,例如:
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;
}
答案 1 :(得分:42)
在web.config中,按照the following documentation
设置标记<system.web>
<globalization culture="en-NZ" uiCulture="en-NZ"/>
</system.web>
答案 2 :(得分:7)
一个好方法是配置Web.Config,日期格式出现在aspx的所有组件中
<system.web>
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
答案 3 :(得分:4)
您可以在不操纵的情况下设置您的文化:
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ");
}
答案 4 :(得分:1)
这是一篇很老的帖子,但我认为在这里提一下它可能是有用的,我的问题就像OP所要求的那样,但解决方案是在IIS中改变了文化,而不是从控制面板。
IIS有自己的文化选择,默认情况下会遵循本地计算机文化。但由于某种原因,它被改变为不同的文化,我开始得到那些奇怪的日期格式。
您可以查找更多答案here。
答案 5 :(得分:0)
对于格式字符串,格式字符/实际上并不像您期望的那样解析为文字“/”。相反,它会解析为区域设置中配置的当前日期时间分隔符。尝试更改DateTimeFormatInfo.DateSeparator属性。
有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx