3

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

我试图添加:

<globalization uiCulture="fr" culture="fr-FR" />

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

编辑:我还应该补充一点,我无法控制客户端并且我补充说:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/mm/yyyy}")]

对我的模型没有结果

4

3 回答 3

11

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

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = 
    new JsonSerializerSettings
    {
        DateFormatHandling = DateFormatHandling.IsoDateFormat,                           
        DateTimeZoneHandling = DateTimeZoneHandling.Unspecified,
        Culture = CultureInfo.GetCultureInfo("fr-FR")
    };
于 2013-11-12T21:57:59.973 回答
2

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

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

显然,只需将 MyDateTimeConvertor 中的转换更改为使用当前文化和您指定的格式的东西。

DateTime.ParseExact(reader.Value.ToString(), "dd/mm/yyyy", CultureInfo.CurrentCulture);

writer.WriteValue(((DateTime)value).ToString("dd/mm/yyyy"));
于 2012-12-11T14:47:59.300 回答
1

前:

"AccessStartTime": "2020-12-01T00:00:00",

将以下代码添加到 Global.asax.cs 的 Application_Start() 中

      IsoDateTimeConverter converter = new IsoDateTimeConverter
        {
            DateTimeStyles = DateTimeStyles.AdjustToUniversal,
            DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
        };
        GlobalConfiguration.Configuration.Formatters
         .JsonFormatter.SerializerSettings.Converters.Add(converter);

后:

 "AccessStartTime": "2020-12-01 00:00:00",

参考:https ://stackoverflow.com/a/42816827/2736970

于 2021-05-18T08:43:27.110 回答