this.expiryDate = LocalDateTime.now().plusHours(EXPIRY_DATE_DURATION);
}
сохраняет дату не понятную? То-есть не то чтобы время через 2 часа, а вообще на час-два раньше
Time zone?
хм?
LocalDateTime читает же локальное время из JVM, не?
У тебя всегда разные значения сохраняет? или на час или на два раньше?
3 часа разница. Было 17:47, записало 14:46
какой тип данных используется для хранения LocalDateTime в базе и как выглядит само поле в сущности?
datetime mysql
@Column(name = "expiry_date", updatable = false) private LocalDateTime expiryDate;
Datetime не хранит тайм зону, поэтому и происходит конвертация к utc https://stackoverflow.com/a/67652019 В двух словах localdatetime не совсем подходит для хранения такой даты, как вариант посмотреть в сторону изменения типа данных
а почему ты используешь LocalDateTime?
Странно что ты не спросил почему он использует JPA
это был бы следующий вопрос
Никогда не используйте LocalDateTime, используйте OffsetDateTime или Instant
че ж всегда кидают так много текста в статье) спасибо
хм, не думал даже о том что это плохо, спасибо)
Вся печаль в том, что LocalDateTime это не метка времени, в отличие от Instant, OffsetDateTime, ZonedDateTime и в базе timestamp
OffsetDateTime тоже не работает Даже zoneId поставил
Что именно не работает?
ставит не правильное время. ZoneOffset zoneOffset = ZoneOffset.of("+03:00"); this.expiryDate = OffsetDateTime.now(zoneOffset).plusHours(EXPIRY_DATE_DURATION); Дает 18:55, когда сейчас 19;55
Обсуждают сегодня