Как задать время в Java со смещением?
вот у нас есть в БД таблица значений для смещений. Допустим ищем слово "вчера" получаем 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