如何将日期时间从 mvc 发送到 web api 作为参数?

use*_*123 3 c# asp.net-mvc asp.net-web-api

现在,当我将其从 mvc 控制器发送到 Web api(如“01-05-2020 00:00:00”)时,Web api 会将其获取为“05-01-2020 00:00:00”,如果我发送“21-” 04-2020 00:00:00' 它给出错误 400: BadRequest。

我在 Web api 中获取参数为

IHttpActionResult Applications(DateTime fromDate,DateTime toDate)
Run Code Online (Sandbox Code Playgroud)

Mvc控制器

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:44329/api/Values");
var postTask = client.GetAsync("/api/Values/Applications?fromDate=" + FromDate + "&toDate=" + ToDate );
Run Code Online (Sandbox Code Playgroud)

Mar*_*kus 5

将日期发送到 API 时,建议使用独立于区域性的格式。广泛使用的是 ISO 8601 格式。

您可以通过调用 ToString("O") 将日期转换为 ISO 8601:

var postTask = client.GetAsync("/api/Values/Applications?fromDate=" + FromDate. ToString("O") + "&toDate=" + ToDate.ToString("O"));
Run Code Online (Sandbox Code Playgroud)

有关格式的详细信息,请参阅此链接: https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings#the-round-trip- oo 格式说明符

另请注意,时区是另一个需要尊重的参数,因此传输日期并期望 UTC 格式的日期是避免时区相关问题的好习惯。