首页 > 解决方案 > 将日期发布到 Asp.net 核心 API

问题描述

我正在使用 asp.net 核心 web API 2.1。我正在向邮递员发送请求。我正在发送“10.12.2019”。但是,我从我的 controller.cs 得到“12.10.2019”。我该如何解决这个错误?

我的控制器.cs

[HttpPost]
public void MyMethod([FromBody]MyClass myClass)
{
}

public class MyClass {
    public DateTime myDate { get; set; }
}

我的请求

http://localhost:5012/api/MyController/MyMethod

我的 json

{
  "myDate": "10.12.2019"
}

我的启动.cs

  services.Configure<RequestLocalizationOptions>(options =>
       {
           options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("tr-TR");
           options.SupportedCultures = new List<CultureInfo> { new CultureInfo("tr-TR") };
       });

标签: c#asp.net-core-webapi

解决方案


试试这个 JsonConvert 属性来自定义日期

public class MyDateTimeConverter : IsoDateTimeConverter
{
    public MyDateTimeConverter()
    {
        base.DateTimeFormat = "dd-MM-yyyy";
    }
}

并将您的财产的属性用作

public class MyClass
{
    [JsonConverter(typeof(MyDateTimeConverter))]
    public DateTime MyDate { get; set; }
}

这将自动将正文转换为预期的格式。

如果您希望所有日期时间属性都采用这种格式,请在您的startup.cs

services.AddMvc()  
   .AddJsonOptions(options =>  
   {  
     options.SerializerSettings.DateFormatString= "dd-MM-yyyy";  
   });  

但是您必须确保为该属性提供的所有值都应采用提供的格式。希望这可以帮助 :)


推荐阅读