C# 发布日期到Asp.net核心API
我正在使用asp.net核心web API 2.1。我正在和邮递员一起发送请求。我发送“2019年12月10日”。但是,我从controller.cs获得“2019年10月12日”。如何修复此错误 MyController.csC# 发布日期到Asp.net核心API,c#,asp.net-core-webapi,C#,Asp.net Core Webapi,我正在使用asp.net核心web API 2.1。我正在和邮递员一起发送请求。我发送“2019年12月10日”。但是,我从controller.cs获得“2019年10月12日”。如何修复此错误 MyController.cs [HttpPost] public void MyMethod([FromBody]MyClass myClass) { } public class MyClass { public DateTime myDate { get; set; } } se
[HttpPost]
public void MyMethod([FromBody]MyClass myClass)
{
}
public class MyClass {
public DateTime myDate { get; set; }
}
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("tr-TR");
options.SupportedCultures = new List<CultureInfo> { new CultureInfo("tr-TR") };
});
我的请求
http://localhost:5012/api/MyController/MyMethod
我的json
{
"myDate": "10.12.2019"
}
My startup.cs
[HttpPost]
public void MyMethod([FromBody]MyClass myClass)
{
}
public class MyClass {
public DateTime myDate { get; set; }
}
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("tr-TR");
options.SupportedCultures = new List<CultureInfo> { new CultureInfo("tr-TR") };
});
services.Configure(选项=>
{
options.DefaultRequestCulture=new Microsoft.AspNetCore.Localization.RequestCulture(“tr”);
options.SupportedCultures=新列表{new CultureInfo(“tr”)};
});
尝试使用此JsonConvert属性作为自定义日期
public class MyDateTimeConverter : IsoDateTimeConverter
{
public MyDateTimeConverter()
{
base.DateTimeFormat = "dd-MM-yyyy";
}
}
并将属性用作
public class MyClass
{
[JsonConverter(typeof(MyDateTimeConverter))]
public DateTime MyDate { get; set; }
}
这将自动将正文转换为预期格式
如果希望所有datetime属性都是此格式,请将此全局设置添加到startup.cs
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.DateFormatString= "dd-MM-yyyy";
});
但您必须确保为该属性提供的所有值都应采用提供的格式。希望这有帮助:)尝试使用此JsonConvert属性来设置自定义日期
public class MyDateTimeConverter : IsoDateTimeConverter
{
public MyDateTimeConverter()
{
base.DateTimeFormat = "dd-MM-yyyy";
}
}
并将属性用作
public class MyClass
{
[JsonConverter(typeof(MyDateTimeConverter))]
public DateTime MyDate { get; set; }
}
这将自动将正文转换为预期格式
如果希望所有datetime属性都是此格式,请将此全局设置添加到startup.cs
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.DateFormatString= "dd-MM-yyyy";
});
但您必须确保为该属性提供的所有值都应采用提供的格式。希望这有帮助:)如果要更改服务使用的区域性,可以在
Startup.cs
中进行设置,并将其添加到Configure()
方法中
这对我很有用(在app.UseMVC()之前添加它):
如果要更改服务使用的区域性,可以在
Startup.cs
中进行设置,并将其添加到Configure()
方法中
这对我很有用(在app.UseMVC()之前添加它):
尝试以yyyy-MM-dd格式发送。后文化不可知日期值我希望从c#@Farshan处解决。我不想更改我发送的JSON对象。我不理解@VidmantasBlazevicius。您能解释一下吗?@HasanOzdemir您需要发送一个有效的日期格式,或者读取为字符串并解析您自己发送的yyyy-MM-dd格式。后文化不可知日期值我希望从c#@Farshan处解决。我不想更改我发送的JSON对象。我不理解@VidmantasBlazevicius。您能解释一下吗?@HasanOzdemir您需要发送一个有效的日期格式或读取为字符串并解析您自己谢谢。我能改变我的本地化版本吗?@Farshan?@HasanOzdemir我想这会奏效的。如果您使用
app.UseRequestLocalization(“tr”)代码>在启动时的配置方法中使用支持的区域性。再次感谢@Farshan。当我使用.toSortDateString()
进行测试时,它是'dd.MM.yyyy'格式。工作得很好。但是,当我通过邮递员发送POST请求时,它是'MM.dd.yyyy'options.SerializerSettings.Culture=new-CultureInfo(“tr-tr”)代码>修复了我从Haldo答案中得到的问题。谢谢你的帮助@Farshan。谢谢。我能改变我的本地化版本吗?@Farshan?@HasanOzdemir我想这会奏效的。如果您使用app.UseRequestLocalization(“tr”)代码>在启动时的配置方法中使用支持的区域性。再次感谢@Farshan。当我使用.toSortDateString()
进行测试时,它是'dd.MM.yyyy'格式。工作得很好。但是,当我通过邮递员发送POST请求时,它是'MM.dd.yyyy'options.SerializerSettings.Culture=new-CultureInfo(“tr-tr”)代码>修复了我从Haldo答案中得到的问题。谢谢你的帮助@Farshan。非常感谢@Haldo。你说的我都做了。当我使用.toSortDateString()
进行测试时,它是'dd.MM.yyyy'格式。工作得很好。但是,当我通过邮递员发送POST请求时,它又是'MM.dd.yyyy'@haldo您是否添加了app.UseRequestLocalization()
和.AddJsonOptions()
以及dd.MM.yyyy
格式?这对我很有用。不确定还有什么建议。请确保AddJsonOptions()
中的日期格式正好是dd.MM.yyyy
。如果是dd-MM-yyyy
@HasanOzdemir,如果您可以以yyyy.MM.dd
(或ISO8601)格式发送日期,该格式将是最不含糊的格式,并且可能会解决问题,则会失败。@HasanOzdemir我已经更新了我的答案。尝试添加options.SerializerSettings.Culture=newcultureinfo(“TR-TR”)
toAddJsonOptions
非常感谢@Haldo。你说的我都做了。当我使用.toSortDateString()
进行测试时,它是'dd.MM.yyyy'格式。工作得很好。但是,当我通过邮递员发送POST请求时,它又是'MM.dd.yyyy'@haldo您是否添加了app.UseRequestLocalization()
和.AddJsonOptions()
以及dd.MM.yyyy
格式?这对我很有用。不确定还有什么建议。请确保AddJsonOptions()
中的日期格式正好是dd.MM.yyyy
。如果是dd-MM-yyyy
@HasanOzdemir,如果您可以以yyyy.MM.dd
(或ISO8601)格式发送日期,该格式将是最不含糊的格式,并且可能会解决问题,则会失败。@HasanOzdemir我已经更新了我的答案。尝试添加options.SerializerSettings.Culture=newcultureinfo(“TR-TR”)代码>至添加JSONOPTIONS