Asp.net web API日期时间格式

yqi*_*qit 2 asp.net asp.net-mvc-4 asp.net-web-api

我有一个Winform客户端,它向我的控制器发送一个json post请求,其日期时间值为格式dd/MM/yyyy,并且该调用返回状态代码400.

我试着添加:

<globalization uiCulture="fr" culture="fr-FR" />
Run Code Online (Sandbox Code Playgroud)

到我的web.config文件,但它仍然无法正常工作.

编辑:我还应该添加我无法控制客户端,我添加:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/mm/yyyy}")]
Run Code Online (Sandbox Code Playgroud)

我的模型没有结果

小智 10

有一个非常简单的解决方案.只需将CultureInfo添加到global.asax中的JsonSerializerSettings,方法Application_Start()即可.

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = 
    new JsonSerializerSettings
    {
        DateFormatHandling = DateFormatHandling.IsoDateFormat,                           
        DateTimeZoneHandling = DateTimeZoneHandling.Unspecified,
        Culture = CultureInfo.GetCultureInfo("fr-FR")
    };
Run Code Online (Sandbox Code Playgroud)


Mar*_*nes 3

如果您通过 JSON 发布此内容,那么您应该能够为您的日期格式创建一个 JSON.NET 转换器。

事实上,在研究这个答案时,我在 SO WebApi Json.NET 自定义日期处理上找到了这个完整的示例

显然,只需将 MyDateTimeConvertor 中的转换更改为使用当前区域性和您指定的格式即可。

DateTime.ParseExact(reader.Value.ToString(), "dd/mm/yyyy", CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

writer.WriteValue(((DateTime)value).ToString("dd/mm/yyyy"));
Run Code Online (Sandbox Code Playgroud)