Как задать время в Java со смещением?

Рейтинг: 0Ответов: 1Опубликовано: 13.01.2023

вот у нас есть в БД таблица значений для смещений. Допустим ищем слово "вчера" получаем shift = -1, "позавчера" shift = -2, "завтра" shift = +1;

Задача: к текущей дате присобачить смещение. Да можно сделать

LocalDate date = LocalDate.now();
int offset = date.getDayOfMonth() + shift;

потом вернуть что? Можно написать Sout(...вывести), но нужно именно вернуть Дату со смещением

До бишь обратно Int'ы в дату возвращать как то не очень.

Вывод формата: 2023-01-12 00:00:00.000

Ответы

▲ 1Принят

Используйте метод plusDays, чтобы получить новую дату, отличающуюся от указанной на заданное количество дней:

LocalDate date = LocalDate.now();
int shift = -2;
LocalDate newDate = date.plusDays(shift);

System.out.println(date);
System.out.println(newDate);

Пример вывода:

2023-01-13
2023-01-11

Если нужно именно в формате со временем, то это по сути уже конвертация LocalDate в LocalDateTime. Можно использовать метод .atStartOfDay() (получить дату-время на полночь указанной даты):

System.out.println(date.atStartOfDay());
System.out.println(newDate.atStartOfDay());

Вывод:

2023-01-13T00:00
2023-01-11T00:00