• Source
    1. import java.time.DayOfWeek;
    2. import java.time.LocalDate;
    3. import java.time.Month;
    4. import java.time.temporal.TemporalAdjusters;
    5. import java.time.temporal.WeekFields;
    6. import java.util.Locale;
    7.  
    8. public class Main {
    9. public static void main(String[] args) {
    10. // A sample LocalDate
    11. LocalDate date = LocalDate.of(2011, Month.JANUARY, 21);
    12.  
    13. LocalDate dateOnSameOrPreviousMon = date.with(
    14. TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
    15.  
    16. LocalDate dateOnSameOrNextSun = date.with(
    17. TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
    18.  
    19. System.out.println(dateOnSameOrPreviousMon);
    20. System.out.println(dateOnSameOrNextSun);
    21.  
    22. // ###### The first day of the week is Locale-sensitive ######
    23. LocalDate now = LocalDate.now();
    24.  
    25. // First day of a week in the US is Sunday
    26. DayOfWeek firstDayOfWeekUs = now
    27. .with(WeekFields.of(Locale.US).dayOfWeek(), 1)
    28. .getDayOfWeek();
    29. System.out.println(firstDayOfWeekUs);
    30.  
    31. // First day of a week in the UK is Monday
    32. DayOfWeek firstDayOfWeekUk = now
    33. .with(WeekFields.of(Locale.UK).dayOfWeek(), 1)
    34. .getDayOfWeek();
    35. System.out.println(firstDayOfWeekUk);
    36.  
    37. // ###### Thus, the first and last days of the week of the given date:
    38.  
    39. // In the US
    40. LocalDate dateOnFirstDayOfWeekUs = date.with(
    41. TemporalAdjusters.previousOrSame(firstDayOfWeekUs));
    42. LocalDate dateOnLaststDayOfWeekUs = dateOnFirstDayOfWeekUs.plusDays(6);
    43. System.out.println(dateOnFirstDayOfWeekUs);
    44. System.out.println(dateOnLaststDayOfWeekUs);
    45.  
    46. // In the UK
    47. LocalDate dateOnFirstDayOfWeekUk = date.with(
    48. TemporalAdjusters.previousOrSame(firstDayOfWeekUk));
    49. LocalDate dateOnLaststDayOfWeekUk = dateOnFirstDayOfWeekUk.plusDays(6);
    50. System.out.println(dateOnFirstDayOfWeekUk);
    51. System.out.println(dateOnLaststDayOfWeekUk);
    52. }
    53. }