У меня возникли проблемы с DateTimes в моем проекте ASP.NET C# Web Api 2. Мне нужно пройти через дату ISO 8601 в моей строке запроса следующим образом:Передача DateTimeKind в ASP.NET Web Api 2.0 Запрос GET
api/resource?at=2016-02-14T23:30:58Z
Мой метод управления заключается в следующем
[HttpGet("/resource")]
public IActionResult GetResource([FromQuery]DateTime? at = null)
{
if (!at.HasValue)
{
at = DateTime.UtcNow;
}
else
{
at = DateTime.SpecifyKind(at.Value, DateTimeKind.Utc);
}
// ...
}
Обратите внимание на маленький хак - дата входит с DateTimeKind из Местный, несмотря на то, что он обозначен знаком «Z», обозначающим UTC. Даты всегда должны быть переданы в UTC, хотя я бы идеально не хотел, чтобы это было ограничением. Я использую NodaTime внутренне и только показываю DateTime в моделях запросов и ответов по устаревшим причинам.
Почему мои даты анализируются на дату DateTimeKind?
Как я могу узнать даты своего UTC из строк запроса, используя ASP.NET web api 2?
Что делать, если вызову ToUniversalTime(), чтобы преобразовать в UTC? – Ivan
См. [Мой ответ] (https://stackoverflow.com/a/46308876/634824) в сообщении dup. –