2017-04-05 23 views
1

今月から重複している週の最初の月曜日と最後の日曜日を取得したい。例えば月の最初の月曜日と最後の日曜日、月の境界を越えて

、今月2017から04(4月)、最初の月曜日は3月27日と最後の日曜日4月30日

+1

@EduardoDennis正確には重複しません。この質問はより複雑で、月の境界を超えています。 –

答えて

2

TemporalAdjusterインターフェースはにクラスを提供日付時刻の値を操作します。 TemporalAdjustersクラスは、いくつかの便利な実装を提供します。

戦略は、最初に現在の日付を決定することです。それにはタイムゾーンが必要です。任意の瞬間について、日付は地球の周りでゾーンごとに異なります。

今日の日付から、今月の最初と最後の日を取得します。それらのそれぞれから、私たちは希望の曜日の前または次の出現を尋ねます。また、月の最初または最後のいずれかが、実際には、以下に示すTemporalAdjustersコールの「orSame」の意味である曜日であることを了承します。ところで

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クラスを見て、月全体表現するために必要がある場合。

+0

ありがとうございました。 – Juanjo

0

あなたはカレンダーを使用して、あなたのような探している日を見つけるために繰り返しを行うことができますCalendar.getInstance().get(Calendar.MONDAY)Calendar.getInstance().get(Calendar.SUNDAY));

+0

厄介な 'カレンダー'は今や古くなり、java.timeクラスに取って代わられています。 –

関連する問題