Продолжаем рассматривать Java8 и новое API для работы с датами.
Класс TemporalAdjusters.
Например, нам надо найти дату следующей пятницы. Сегодня пятница 16.06.2017, значит следующая пятница будет
23.06.2017.

public static LocalDate calcNextFriday() {
	return LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
}

Абсолютно аналогично находится дата предыдущей пятницы:

public static LocalDate calcPreviousFriday() {
	  return LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
}

В классе TemporalAdjusters есть также методы nextOrSame и previousOrSame. Т.е. если сегодня пятница, то должна вернуться
сегодняшняя дата.

Вот весь код:

public static LocalDate calcNextFriday() {
	  return LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
}
	
public static LocalDate calcNextOrSameFriday() {
	  return LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
}

public static LocalDate calcPreviousFriday() {
	  return LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
}	

public static LocalDate calcPreviousOrSame() {
	  return LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY));
}

Кстати, использую импорт статических методов, код становится вообще таким(для IDE Eclipse нужно стать курсоров на нужным метод и нажать Ctrl + Shift + m):

public static LocalDate calcNextFriday() {
	return LocalDate.now().with((FRIDAY));
}
	
public static LocalDate calcOrSameFriday() {
	return LocalDate.now().with(nextOrSame(FRIDAY));
}
	
public static LocalDate calcPreviousFriday() {
	return LocalDate.now().with(previous(FRIDAY));
}	

public static LocalDate calcPreviousOrSame() {
	return LocalDate.now().with(previousOrSame(FRIDAY));
}
Реклама