DateTime格式与文化不匹配

Col*_*ill 6 c# asp.net datetime locale

我有一个Windows Server 2008 R2系统配置了默认的区域设置(没有覆盖格式或任何东西),它设置为en-US.

当我询问以下内容时: System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat

它将DateSeparator列为-(破折号)而不是/(斜杠).所以DateTime.Now.ToString()看起来像这样:

01-30-2015.

另外,CurrentThread.CurrentCulture.ToString()="en-US"

我完全不知道这是怎么可能的,但更重要的是,我想知道.NET是否有某种类型的语言环境覆盖,可以通过某种方式进行配置?

系统区域和语言设置是正常的,尚未更改.非常感谢任何帮助,谢谢.

这是诊断信息的代码.它是在asp.net页面上的asp.net中运行的.

Current Date Time: <%= DateTime.Now.ToString() %>
Current Short Date: <%= DateTime.Now.ToShortDateString() %>
Current Culture: <%= System.Threading.Thread.CurrentThread.CurrentCulture.ToString() %>
Current UI Culture: <%= System.Threading.Thread.CurrentUICulture.ToString() %>

DateTimeFormatInfo invariant = CultureInfo.InvariantCulture.DateTimeForamat;
DateTimeFormatInfo uiThread = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat;
DateTimeFormatInfo thread = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;

Type type = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.GetType();
foreach( var prop in type.GetProperties()) {
  <%= prop.Name %> 
  <%= prop.GetValue(invariant, null) %> <br/>
  <%= prop.GetValue(uiThread, null) %> <br/>
  <%= prop.GetValue(thread, null) %> <br/>
}
Run Code Online (Sandbox Code Playgroud)

区域和语言设置 区域和语言设置

这是一些额外的信息 有关DateTimeFormat的诊断信息

小智 2

每个用户都有不同的区域配置文件。您当前的帐户和应用程序可能使用的不是同一帐户,因此您会看到不同的值。

转到区域设置窗口 -> 管理 -> 单击复制设置并勾选所有复选框(欢迎屏幕和系统帐户 + 新用户帐户),然后单击确定。看看它是否能解决您的问题。如果您的应用程序是 Web 应用程序,您需要创建另一个 AppPool 才能看到它受到影响。