获取月份的第一个星期一和最后一个星期日,越过月界

时间:2017-04-05 17:44:16

标签: java date

我希望第一个星期一和最后一个星期日与当月重叠,即使星期一或星期日不是从当月开始。

例如,本月2017-04(4月),第一个星期一是3月27日,也就是4月30日的最后一个星期日。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

TemporalAdjuster接口提供了操作日期时间值的类。 TemporalAdjusters类提供了几个方便的实现。

策略是首先确定当前日期。这需要一个时区。对于任何特定时刻,日期在全球范围内因地区而异。

从今天开始,获取本月的第一天和最后一天。从我们每个人那里,我们要求上一周或下一次出现我们想要的星期几。我们也接受月份的第一个或最后一个月可能实际上是期望的星期几,这是“或同一”在TemporalAdjusters次呼叫中的含义。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

LocalDate firstOfMonth = today.with( TemporalAdjusters.firstDayOfMonth() );
LocalDate monday = firstOfMonth.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) );

LocalDate endOfMonth = today.with( TemporalAdjusters.lastDayOfMonth() );
LocalDate sunday = endOfMonth.with( TemporalAdjusters.nextOrSame( DayOfWeek.SUNDAY ) );

顺便说一句,如果您需要代表整个月,请查看YearMonth课程。

答案 2 :(得分:0)

您可以使用日历并进行迭代,以查找您所寻找的日期:Calendar.getInstance().get(Calendar.MONDAY)Calendar.getInstance().get(Calendar.SUNDAY));