ASP.NET日期格式

时间:2012-01-10 14:58:56

标签: c# asp.net asp.net-mvc asp.net-mvc-3 datetime-format

  • 我在特定服务器上遇到问题。

在除问题环境之外的每个环境

服务器正确识别所有客户都在英国并解析英国格式的日期:

DD/MM/YYYY

在问题服务器上

问题似乎只发生在一台服务器上。此服务器似乎错误地要求美国日期:

MM/DD/YYYY

我已尝试过的内容

  • 在web.config文件中添加“全球化”部分以尝试强制使用en-GB文化
  • 检查“machine.config”的全球化部分(也说en-GB)。
  • 我已经检查过客户端要求en-GB作为respnse的首选文化。
  • 根据Eoin的建议,我还检查了服务器的区域设置(他们将日期设置为dd / MM / yyyy这是正确的。)

我不能尝试

我正在使用MS ASP.NET MVC,它自动将HTML表单数据反序列化为对象,因此我无法手动指定日期格式 - 例如使用DateTime.Parse(myDateStr, "dd/MM/yyyy")进行解析由Microsoft MVC完成。

还有什么我可以做的。这是一个内联网应用程序,所有客户都在英国。

5 个答案:

答案 0 :(得分:5)

如果您在全球化部分中覆盖当前的文化,请确保指定UICulture&文化选择。

然而,鉴于您在许多服务器中只有1个出现此问题,我希望服务器本身的配置不同。如果您可以作为管理员登录问题服务器,请检查以下内容(这是Windows 7,但在Windows Server 2008上应该类似)

控制面板>地区&语言>格式标签>格式:“英语(英国)”

并验证日期是dd / MM / yyyy格式

答案 1 :(得分:1)

一个可能的原因是日期/时间格式的系统设置设置为US。您可以在“控制面板”中的“区域和语言”中进行检查。

enter image description here

答案 2 :(得分:1)

你需要做两件事。

  1. 在web.config中设置文化,如下所示

    uiCulture =“en-GB”culture =“en-GB”

  2. 将表单方法设置为POST,如下所述

    using (Html.BeginForm("DailyReport", "Reports", FormMethod.Post, new { id = "ActivityReport" }))
    
  3. DailyReport 是您的控制器操作方法,报告是控制器,最重要的是 FormMethod.Post 通过设置表单方法到POST将解决你的日期格式问题。

    享受!

答案 3 :(得分:0)

您的服务器可能以不同的文化运行。如果您只在服务器上运行一个项目,则可以像Eoin Campbell那样改变其文化

但是如果您的服务器运行其他具有文化意识的项目,您可以强制执行项目的线程,如下所示:

Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB")
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB")

不影响服务器上运行的所有其他内容

答案 4 :(得分:-1)

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");