fork download
  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. }
Success #stdin #stdout 0.14s 59808KB
stdin
Standard input is empty
stdout
2011-01-17
2011-01-23
SUNDAY
MONDAY
2011-01-16
2011-01-22
2011-01-17
2011-01-23