在除问题环境之外的每个环境
服务器正确识别所有客户都在英国并解析英国格式的日期:
DD/MM/YYYY
在问题服务器上
问题似乎只发生在一台服务器上。此服务器似乎错误地要求美国日期:
MM/DD/YYYY
我已尝试过的内容
我不能尝试
我正在使用MS ASP.NET MVC,它自动将HTML表单数据反序列化为对象,因此我无法手动指定日期格式 - 例如使用DateTime.Parse(myDateStr, "dd/MM/yyyy")
进行解析由Microsoft MVC完成。
还有什么我可以做的。这是一个内联网应用程序,所有客户都在英国。
答案 0 :(得分:5)
如果您在全球化部分中覆盖当前的文化,请确保指定UICulture&文化选择。
然而,鉴于您在许多服务器中只有1个出现此问题,我希望服务器本身的配置不同。如果您可以作为管理员登录问题服务器,请检查以下内容(这是Windows 7,但在Windows Server 2008上应该类似)
控制面板>地区&语言>格式标签>格式:“英语(英国)”
并验证日期是dd / MM / yyyy格式
答案 1 :(得分:1)
一个可能的原因是日期/时间格式的系统设置设置为US。您可以在“控制面板”中的“区域和语言”中进行检查。
答案 2 :(得分:1)
你需要做两件事。
在web.config中设置文化,如下所示
uiCulture =“en-GB”culture =“en-GB”。
将表单方法设置为POST,如下所述
using (Html.BeginForm("DailyReport", "Reports", FormMethod.Post, new { id = "ActivityReport" }))
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");