API, созданный OpenApi Generator, портит часовые поясаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 API, созданный OpenApi Generator, портит часовые пояса

Сообщение Anonymous »

Я пытаюсь создать интерфейсный и внутренний API с помощью генератора OpenAPI. В моей схеме у меня есть следующий объект:

Код: Выделить всё

Range:
type: object
properties:
creationDate:
type: string
format: date
from:
type: string
format: date-time
to:
type: string
format: date-time
Для серверной части я использую следующие сопоставления типов в моем файле градиента, чтобы моя модель использовала LocalDateTime вместо OffsetDateTime:

Код: Выделить всё

typeMappings = ['string+date-time': 'LocalDateTime']
importMappings = ['LocalDateTime': 'java.time.LocalDateTime']
Теперь сгенерированная модель для моего бэкэнда выглядит так:

Код: Выделить всё

@Valid
private LocalDate creationDate;

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private LocalDateTime from;

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private LocalDateTime to;
Фронтенд просто использует дату для обоих типов. Он выполняется просто с помощью:

Код: Выделить всё

openapi-generator-cli generate
Проблема, с которой я сейчас столкнулся, заключается в том, что к датам и времени, которые я получаю из формы в моем интерфейсе, прикреплена информация о часовом поясе (GMT+2). При передаче на серверную часть сгенерированный код внешнего интерфейса вызывает следующий метод:

Код: Выделить всё

'from': value['from'] == null ? undefined : ((value['from']).toISOString()),
Это приводит к тому, что время сдвигается на 2 часа назад, поскольку GM+2 указывает разницу во времени в 2 часа.
Однако в серверной части полученная дата обрабатывается с помощью значение, которое он получает (то есть за 2 часа до этого), но как GMT+2. Это означает, что значение в серверной части фактически сохраняется на 2 часа раньше, чем было введено.
То же самое относится и к дате, что в данном случае приводит к тому, что дата сохраняется на день раньше.
Я не понимаю, что я делаю неправильно или как я могу решить эту проблему, не меняя вручную часовой пояс в данных, которые я передаю в сгенерированную службу.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -timezones
Ответить

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

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

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

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

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