/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.*;
import java.time.temporal.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Set<DayOfWeek> daysOfWeek = EnumSet.noneOf ( DayOfWeek.class );
daysOfWeek.add ( DayOfWeek.MONDAY );
daysOfWeek.add ( DayOfWeek.WEDNESDAY );
YearMonth ym = YearMonth.of ( 2017 , Month.JANUARY ); // Or ( 2017 , 1 ) for January.
LocalDate firstOfMonth = ym.atDay ( 1 );
for ( DayOfWeek dayOfWeek : daysOfWeek ) {
List<LocalDate> dates = new ArrayList<> ( 5 );
LocalDate ld = firstOfMonth.with ( TemporalAdjusters.dayOfWeekInMonth ( 1 , dayOfWeek ) );
do {
dates.add ( ld );
// Set up next loop.
ld = ld.plusWeeks ( 1 );
} while ( YearMonth.from ( ld ).equals ( ym ) ); // While in the targeted month.
System.
out.
println ( "ym.toString(): " + ym
); System.
out.
println ( "dayOfWeek.toString(): " + dayOfWeek
); System.
out.
println ( "dates.toString(): " + dates
); System.
out.
println ( "----" ); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLio7CmltcG9ydCBqYXZhLnRpbWUudGVtcG9yYWwuKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgogICAgICAgIFNldDxEYXlPZldlZWs+IGRheXNPZldlZWsgPSBFbnVtU2V0Lm5vbmVPZiAoIERheU9mV2Vlay5jbGFzcyApOwogICAgICAgIGRheXNPZldlZWsuYWRkICggRGF5T2ZXZWVrLk1PTkRBWSApOwogICAgICAgIGRheXNPZldlZWsuYWRkICggRGF5T2ZXZWVrLldFRE5FU0RBWSApOwoKICAgICAgICBZZWFyTW9udGggeW0gPSBZZWFyTW9udGgub2YgKCAyMDE3ICwgTW9udGguSkFOVUFSWSApOyAgLy8gT3IgKCAyMDE3ICwgMSApIGZvciBKYW51YXJ5LgoKICAgICAgICBMb2NhbERhdGUgZmlyc3RPZk1vbnRoID0geW0uYXREYXkgKCAxICk7CgogICAgICAgIGZvciAoIERheU9mV2VlayBkYXlPZldlZWsgOiBkYXlzT2ZXZWVrICkgewogICAgICAgICAgICBMaXN0PExvY2FsRGF0ZT4gZGF0ZXMgPSBuZXcgQXJyYXlMaXN0PD4gKCA1ICk7CiAgICAgICAgICAgIExvY2FsRGF0ZSBsZCA9IGZpcnN0T2ZNb250aC53aXRoICggVGVtcG9yYWxBZGp1c3RlcnMuZGF5T2ZXZWVrSW5Nb250aCAoIDEgLCBkYXlPZldlZWsgKSApOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBkYXRlcy5hZGQgKCBsZCApOwogICAgICAgICAgICAgICAgLy8gU2V0IHVwIG5leHQgbG9vcC4KICAgICAgICAgICAgICAgIGxkID0gbGQucGx1c1dlZWtzICggMSApOwogICAgICAgICAgICB9IHdoaWxlICggWWVhck1vbnRoLmZyb20gKCBsZCApLmVxdWFscyAoIHltICkgKTsgIC8vIFdoaWxlIGluIHRoZSB0YXJnZXRlZCBtb250aC4KCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoICJ5bS50b1N0cmluZygpOiAiICsgeW0gKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICggImRheU9mV2Vlay50b1N0cmluZygpOiAiICsgZGF5T2ZXZWVrICk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoICJkYXRlcy50b1N0cmluZygpOiAiICsgZGF0ZXMgKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICggIi0tLS0iICk7CiAgICAgICAgfQoKCgl9Cn0=
ym.toString(): 2017-01
dayOfWeek.toString(): MONDAY
dates.toString(): [2017-01-02, 2017-01-09, 2017-01-16, 2017-01-23, 2017-01-30]
----
ym.toString(): 2017-01
dayOfWeek.toString(): WEDNESDAY
dates.toString(): [2017-01-04, 2017-01-11, 2017-01-18, 2017-01-25]
----