如何检查是否是星期六,并在同一个月设置为最近的一天

时间:2015-04-14 15:23:13

标签: java calendar

如何检查日期是否在星期六,那么它将在同一个月设置为最近的一天?

2种情景:

  1. E.g。如果周六是21日,那么它将被设置为20, 周五
  2. E.g。如果星期六是1号,那么它将被设置为 3日(星期一)

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你想要的东西,但是你想要这样的东西(需要Java 8 ......)

public static void main(String[] args) {
    System.out.println(toNearestDayInSameMonthIfSaturday(LocalDate.of(2015, 4, 4))); // Print 2015-04-05
    System.out.println(toNearestDayInSameMonthIfSaturday(LocalDate.of(2015, 4, 18))); // Print 2015-04-19
    System.out.println(toNearestDayInSameMonthIfSaturday(LocalDate.of(2015, 4, 25))); // Print 2015-04-25
}

private static LocalDate toNearestDayInSameMonthIfSaturday(LocalDate local) {
    LocalDate result;
    if (local.getDayOfWeek() == DayOfWeek.SATURDAY) {
        LocalDate plusOneDay = local.plusDays(1);
        LocalDate minusOneDay = local.minusDays(1);

        if (plusOneDay.getMonthValue() != local.getMonthValue()) {
            result = minusOneDay;
        } else {
            result = plusOneDay;
        }
    } else {
        result = local;
    }

    return result;
}