import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.WeekFields;
import java.util.Locale;
public class Main {
public static void main
(String[] args
) { // A sample LocalDate
LocalDate date = LocalDate.of(2011, Month.JANUARY, 21);
LocalDate dateOnSameOrPreviousMon = date.with(
TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate dateOnSameOrNextSun = date.with(
TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
System.
out.
println(dateOnSameOrPreviousMon
); System.
out.
println(dateOnSameOrNextSun
);
// ###### The first day of the week is Locale-sensitive ######
LocalDate now = LocalDate.now();
// First day of a week in the US is Sunday
DayOfWeek firstDayOfWeekUs = now
.
with(WeekFields.
of(Locale.
US).
dayOfWeek(),
1) .getDayOfWeek();
System.
out.
println(firstDayOfWeekUs
);
// First day of a week in the UK is Monday
DayOfWeek firstDayOfWeekUk = now
.
with(WeekFields.
of(Locale.
UK).
dayOfWeek(),
1) .getDayOfWeek();
System.
out.
println(firstDayOfWeekUk
);
// ###### Thus, the first and last days of the week of the given date:
// In the US
LocalDate dateOnFirstDayOfWeekUs = date.with(
TemporalAdjusters.previousOrSame(firstDayOfWeekUs));
LocalDate dateOnLaststDayOfWeekUs = dateOnFirstDayOfWeekUs.plusDays(6);
System.
out.
println(dateOnFirstDayOfWeekUs
); System.
out.
println(dateOnLaststDayOfWeekUs
);
// In the UK
LocalDate dateOnFirstDayOfWeekUk = date.with(
TemporalAdjusters.previousOrSame(firstDayOfWeekUk));
LocalDate dateOnLaststDayOfWeekUk = dateOnFirstDayOfWeekUk.plusDays(6);
System.
out.
println(dateOnFirstDayOfWeekUk
); System.
out.
println(dateOnLaststDayOfWeekUk
); }
}