即使星期一或星期日不是從當前月份開始,我想要獲得與當前月份重疊的周的第一個星期一和最後一個星期日。獲取月份的第一個星期一和最後一個星期日,穿過月份邊界
例如,本月2017-04(4月)的第一個星期一是3月27日的最後一個星期日4月30日
即使星期一或星期日不是從當前月份開始,我想要獲得與當前月份重疊的周的第一個星期一和最後一個星期日。獲取月份的第一個星期一和最後一個星期日,穿過月份邊界
例如,本月2017-04(4月)的第一個星期一是3月27日的最後一個星期日4月30日
的TemporalAdjuster
接口提供了類操縱日期 - 時間值。 TemporalAdjusters
類提供了幾個方便的實現。
策略是首先確定當前日期。這需要一個時區。對於任何特定的時刻,日期因地區而異。
從今天的日期開始,獲取本月的第一天和最後一天。從我們所要求的每一個我們希望的星期幾的上一次或下一次出現中。我們也接受,無論是第一個月還是最後一個月實際上都可能是期望的星期幾,這是「orSame」在以下看到的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
類。
謝謝你,那個例子工作 – Juanjo
您可以使用日曆並迭代找到你要找像天:Calendar.getInstance().get(Calendar.MONDAY)
和Calendar.getInstance().get(Calendar.SUNDAY));
麻煩的'日曆'現在是遺留的,被java.time類取代。 –
@EduardoDennis不完全是重複的。這個問題更復雜,跨越月份邊界。 –