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

时间:2008-11-19 02:26:54

标签: asp.net date-format

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

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

当我使用dd/MM/yyyy格式化日期时,我希望今天能看到19/11/2008

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

就在最近,由于一些神秘的原因,我们的本地机器变得如此轻微。尽管仍设置为“英语(新西兰)”,但日期分隔符已从/更改为-!仍然显示“英语(新西兰)”和日期分隔符/的服务器上没有发生相同的更改。

现在,对于我的本地计算机,对于格式dd/MM/yyyy,我得到19-11-2008而不是19/11/2008

这有点令人不安。

到目前为止,我能看到的唯一方法是逃避斜杠并将格式设置为dd\/MM\/yyyy。它似乎有效,但它似乎不是理想的解决方案。

有人可以帮忙吗?

注意:这适用于Intranet应用程序,我不关心真正的全球化。我只想修改日期格式,而不是让我改变它。

6 个答案:

答案 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