63

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

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

例如,当我格式化日期时,dd/MM/yyyy我希望看到19/11/2008今天。

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

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

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

这有点令人不安。

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

有人可以帮忙吗?

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

4

6 回答 6

112

您可以在 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;
}
于 2008-11-19T02:35:14.250 回答
54

在 web.config 中,按照以下文档设置标签

<system.web>
    <globalization  culture="en-NZ"  uiCulture="en-NZ"/>
</system.web>
于 2009-05-08T00:47:45.803 回答
9

一个好办法是配置Web.Config,日期格式出现在一个aspx的所有组件中

<system.web>    
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
于 2013-11-06T02:18:29.227 回答
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"); }

于 2008-11-19T03:03:21.463 回答
3

这是一篇旧帖子,但我认为在这里提及它可能很有用,我的问题类似于 OP 所要求的,但解决方案是在 IIS 中更改了文化,而不是从控制面板更改。

IIS 有自己的文化选择,默认情况下将遵循本地计算机文化。但由于某种原因,它变成了一种不同的文化,我开始得到那些奇怪的日期格式。

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

于 2017-02-01T10:11:25.713 回答
0

对于格式字符串,格式字符 / 实际上并不像您期望的那样解析为文字“/”。相反,它会解析为您在区域设置中配置的当前日期时间分隔符。尝试更改 DateTimeFormatInfo.DateSeparator 属性。

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

于 2008-11-19T03:15:18.647 回答