我有一个相当简单的asp.net core(MVC)项目,该项目在数据中包括一些日期字段。
我希望日期显示为dd / MM / yyyy,因此日期字段的显示格式如下:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? AccessExpiresDate { get; set; }
在Windows开发环境中进行测试时,一切都很好。如果要输入2018年12月1日,请输入2018年12月1日,这样保存。我回去,它再次显示为(01/12/2018)。
但是当我部署到linux(Centos)时,它的行为有所不同。它可以正确显示(dd / MM / yyyy),但似乎需要以MM / dd / yyyy输入才能进行编辑。
例如,如果我输入日期为01/12/2018,保存,然后查看,它将显示为12/01/2018。 如果我返回编辑,它将显示为12/01/2018。如果我随后将其保存而不进行更改,则再次查看,它将显示为01/12/2018。
如果我输入日期为20/12/2018,它将使日期无效,就好像这是一个无效日期(因为它认为我输入的是第20个月)。
所以-这是怎么回事?在Linux上部署时,为什么日期条目的行为会有所不同?我该如何强制它始终期望日期为dd / MM / yyyy?
谢谢。
答案 0 :(得分:0)
我在此帖子中找到了答案:How to set culture for date binding in Asp.Net Core?
我将以下代码放入Startup.Configure的开始,一切都很好:
var supportedCultures = new[] { new CultureInfo("en-AU") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-AU"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});