Nie trzeba wykonywać żadnych obliczeń ręcznie.
Można ustawić określoną datę za pomocą regulatora za pomocą metody LocalDateTime.with(adjuster)
. Jest wbudowany regulator do następnego dnia tygodnia: TemporalAdjusters.next(dayOfWeek)
:
Zwraca następny dzień-of-tygodniowy regulator, który dostosowuje datę pierwszego wystąpienia określony dzień-of-tydzień po data jest dostosowywana.
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime nextMonday = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println(nextMonday);
}
Ten kod zwróci następny poniedziałek na podstawie bieżącej daty.
Korzystanie importu statyczne, to sprawia, że kod łatwiejsze do odczytania:
LocalDateTime nextMonday = dateTime.with(next(MONDAY));
Należy pamiętać, że jeśli bieżąca data jest już w poniedziałek, to kod zwróci następny poniedziałek (tj Poniedziałek od następnego tygodnia). Jeśli chcesz zachować aktualną datę w tym przypadku, możesz użyć nextOrSame(dayOfWeek)
.
Polecam: https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html – Fincio
@Fincio Z pewnością nie. – Tunaki
LocalDateTime \t plus tygodnie (długie tygodnie)? – Fincio