Я использую .NET 8 и заметил, что строки DateTime из запросов анализируются по-разному в параметрах запроса и в теле запроса.
Я сделал этот пример запроса, чтобы показать проблема:
Код: Выделить всё
POST /api/Save?ValidFrom=2024-01-01T00:00:00+01:00
{
"validFrom":"2024-01-01T00:00:00+01:00"
}
Как видите, дата в параметрах запроса и теле идентичны. Я использую формат ISO8601. Проблема в том, что теперь в методе контроллера дата из параметров запроса анализируется как тип UTC «31.12.2023 23:00:00», а дата из тела — как локальный тип «01.01.2024 00:00:00». .
Код: Выделить всё
[HttpPost]
public async Task SaveAsync(DateTime ValidFrom, [FromBody] Model model, CancellationToken cancellationToken)
{
// ValidFrom = 31.12.2023 23:00:00
// model.ValidFrom = 01.01.2024 00:00:00
}
Есть ли способ использовать такое же поведение синтаксического анализа в параметрах запроса? Единственный обходной путь, который я сейчас вижу, — это использовать DateTimeOffset в параметре запроса и использовать LocalDate.
Подробнее здесь:
https://stackoverflow.com/questions/787 ... me-parsing