Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET中全局设置日期格式?_Asp.net_Date Format - Fatal编程技术网

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

如何在ASP.NET中全局设置日期格式?,asp.net,date-format,Asp.net,Date Format,如何在ASP.NET中全局设置日期格式 我的本地计算机和服务器的区域设置设置为“英语(新西兰)” 当我用dd/MM/yyyy格式化日期时,我希望看到今天的19/11/2008 直到最近,这才是我从本地机器和服务器上得到的 就在最近,出于某种神秘的原因,我们当地的机器发生了微小的变化。尽管仍设置为“英语(新西兰)”,但交货日期已从/更改为-!在仍然显示“English(New Zealand)”和交货日期的/的服务器上,没有发生相同的更改 现在对于我的本地机器,对于格式dd/MM/yyyy我得到1

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

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

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

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

就在最近,出于某种神秘的原因,我们当地的机器发生了微小的变化。尽管仍设置为“英语(新西兰)”,但交货日期已从
/
更改为
-
!在仍然显示“English(New Zealand)”和交货日期的
/
的服务器上,没有发生相同的更改

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

这有点令人不安

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

有人能帮忙吗


注意:这是针对内部网应用程序的,我不关心真正的全球化。我只想修复日期格式,而不想让它在我身上更改。

您可以在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;
}

您可以设置区域性而无需操作:

using System.Globalization;
using System.Threading;

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

利用制度全球化;
使用系统线程

//。。。 受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e) {
Thread.CurrentThread.CurrentCulture=Thread.CurrentThread.CurrentUICulture=new CultureInfo(“en NZ”); }

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


有关详细信息,请参阅:

在web.config中,根据设置标记


一个好方法是配置Web.Config,日期格式显示在aspx的所有组件中

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

这是一篇老文章,但我认为在这里提及它可能会有用,我的问题类似于OP提出的问题,但解决方案是在IIS中更改区域性,而不是从控制面板

IIS有自己的区域性选择,默认情况下将遵循本地计算机区域性。但出于某种原因,它被改变成了一种不同的文化,我开始使用那些奇怪的约会格式


你可以寻找更多答案。

我不想改变文化,因为所有环境都设置为相同的文化,“英语(新西兰)”。问题在于日期分隔符不同。我们的本地人似乎已被集团政策或其他东西更改,将日期分隔符设置为“-”而不是“/”,以供参考:@Filip-“dd-MMM-yyyy”有效,并将给出类似“2016年6月3日”的日期。
<system.web>    
<globalization uiCulture="en" culture="en-NZ" />
</system.web>