javascript - 使用时刻和使用 .net 核心的 Web api 请求的日期格式不正确
问题描述
我想使用时刻来处理日期,但是当我向 web api url 发送请求时,日期以另一种格式到达。
例如,我从 JS 发送“2021-01-02”,但是当请求到达后端时,日期转换为“02-01-2021”,我需要为后端处理 YYY-MM-DD 格式
示例请求:
get(): Observable<any>{
let strDate = '2021-01-02';
const payoad = {
... //other properties,
datesearch: moment(strDate).format('YYYY-MM-DD') // --> 2021-01-02
}
return this.http.post<any>('https://localhost:33421/api/orders', payload)
}
我的 c# 类请求:
public class RequestDto
{
public string Category { get; set; }
public string Product { get; set; }
public DateTime Datesearch { get; set; }
}
我的网络 api 控制器:
[HttpPost]
public async Task<IActionResult> Search(RequestDto request)
{
var datecheck = request.Datesearch; // -> this get '02-01-2021'
....
....
return Ok(response);
}
我可能做错了什么?
更新:
解决如下:当我使用net core时,我必须在我的 SatrtUp.cs 类中设置文化信息 -> 配置方法
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
CultureInfo customCulture = new CultureInfo("en-US", true);
customCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(customCulture),
SupportedCultures = new List<CultureInfo>
{
customCulture
},
SupportedUICultures = new List<CultureInfo>
{
customCulture
}
});
......
......
}
解决方案
最好的办法就是改变
'YYYY-MM-DD'
至
'YYYY-MMM-DD'
这样可以避免歧义,并且 c# DateTime 可以轻松解析它。
IE。05-06-20 可能是 2020 年 5 月 6 日或 2020 年 6 月 5 日
推荐阅读
- java - 使用 Jsoup 获取完整的 HTML
- spring - EnableWebMvcConfiguration 需要一个名为“entityManagerFactory”的 bean,但无法找到
- python - 从数据框中捕获组织名称
- google-app-engine - GAE 标准迁移到 Go 1.11/1.12 后的缓存
- r - 如何根据包括自引用匹配在内的一组条件删除行对?
- kubernetes - minikube 上的 Istio - Envoy 缺少入站应用程序端口的侦听器:9095
- php - 如何在 PHP 文件中包含 HTML 文件?
- excel - Excel - 基于两个条件的条件格式公式
- swift - Swift:索引超出范围(for)
- c# - 使用 AutoMapper 处理部分更新(未发布)