网站日期格式在上传后会更改,即使全局设置了文化

时间:2018-02-14 08:38:07

标签: c# asp.net-mvc datetime datepicker

我创建了一个使用引导日期选择器的表单,允许用户输入日期,并且在我的localhost上测试时使用的方法非常有效。当我上传网站进行最终测试时会出现问题,该测试会将我的网站中的日期格式从dd / MM / yyyy切换到dd-MM-yyyy,即使我已使用global.asax文化设置转换日期。这个日期格式不会是这样的问题,但我的表单不再提交,我得到的错误说“序列不包含任何元素”我检查了服务器和站点中的所有设置,可能导​​致这个但似乎无法解决问题。提前感谢任何建议。

将日期转换为前端的指定格式:

.GetValueOrDefault().ToString("dd/MM/yyyy")

Global.asax代码:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    CultureInfo newCulture = new CultureInfo("en-ZA");
    newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
    newCulture.DateTimeFormat.DateSeparator = "/";
    Thread.CurrentThread.CurrentCulture = newCulture;
    Thread.CurrentThread.CurrentUICulture = newCulture;
}

控制器代码:

_vehicle[c] = new Vehicle()
{
    inceptionDate = string.IsNullOrEmpty(frm["inception_" + c]) ? 
    (IsFleetClient ? DateTime.Now.Date.AddDays(1) : DateTime.Now.Date) : 
    Convert.ToDateTime(frm["inception_" + c]).ToLocalTime()
};

1 个答案:

答案 0 :(得分:0)

我并不精通ASP.NET,但在应用启动时在当前线程上设置文化似乎并不正确 - IIS是多线程的,因此可能不是处理的线程你以后的要求。

尝试在Web.Config文件中全局设置文化,如下所示:

https://stackoverflow.com/a/7216126/1138552

编辑:

此外,en-ZA ShortDatePattern yyyy/MM/dd似乎dd/MM/yyyy而非(New-Object CultureInfo "en-ZA").DateTimeFormat.ShortDatePattern 。这可以在PowerShell中测试:

yyyy/MM/dd

输出(在我的机器上):

dd/MM/yyyy

如果您想将其更改为ShortDatePattern,请尝试在Application_PreRequestHandlerExecute中设置文化和{{1}}。