Разница .NET в анализе DateTImeC#

Место общения программистов C#
Ответить
Anonymous
 Разница .NET в анализе DateTIme

Сообщение Anonymous »

Я использую .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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»