Я использую Microsoft.AspNetCore.Odata 7.3
в Asp. net Проект Web Api Core 3.1.
Оказывается, библиотека добавляет TimeZone сервера в DateTimes из вывода Ef.
Ef сам возвращает данные с DateTimeKind.Unspecified
.
Итак, я ожидал, что odata lib просто пропустит сдвиг TimeZone, потому что службы webApi ведут себя таким образом.
Вопрос в том, как чтобы odata не добавляла TimeZone сервера или возвращала все в ut c (Z-формат).
Пытался установить через NewtonSoft serializerSettings, но это не работает для конечных точек OData
services.AddOData();
services.AddMvc(options => {options.EnableEndpointRouting = false;});
services
.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
});
Спасибо за помощь!
Upd: Установка DateTimeKind на Ut c на уровне Ef (через ValueConverter
s) позволяет серверу правильно конвертировать datetime в локальное. Но все же datetime возвращается не в Z-формате, а с локальным часовым поясом сервера.