例如: 给定月份= 2,并且给定年份= 2014年,我使用以下代码获得周列表。为什么我每个月应用1个默认情况下月份仅以索引开始。
SampleCode:
Calendar calendar = Calendar.getInstance();
calendar.set(1, 2014);
calendar.set(2014, 1, 1);
int ndays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
Set<Integer> weeks = new HashSet<Integer>();
for (int i = 1; i <= ndays; i++) {
weeks.add(calendar.get(Calendar.WEEK_OF_YEAR));
calendar.add(Calendar.DATE, 1);
}
结果: 周=&gt; [8,9,5,6,7]
获得此结果后,如何获得本周的可用日期。 2014年Febraury月,第5周仅有一天(周六)。除了过去的第9周,剩下的几个星期有一个星期几。
我预期的格式:
week5 => 1-saturday
week6 => 2-sunday
3-monday
4-tuesday
5-wednesday
6-thursday
7-friday
8-saturday
week7 => 9-sunday
.
.
.
.
week9 => 23-sunday
24-monday
25-tuesday
26-wednesday
27-thursday
28-friday
29-saturday
有人指导我获取此列表&lt; 键,日期列表&gt;如上所述结对。
答案 0 :(得分:0)
为什么你想在最初几周收集,然后找到一周中的几天。 由于您已经循环了一个月的所有日子,您可以创建一个地图,其中以星期为关键,将天数列为值。
以某种方式:
Calendar calendar = Calendar.getInstance();
calendar.set(1, 2014);
calendar.set(2014, 1, 1);
int ndays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
Map<Integer, List<Integer>> map = new TreeMap<Integer, List<Integer>>();
for (int i = 1; i <= ndays; i++) {
int week = calendar.get(Calendar.WEEK_OF_YEAR);
int day = calendar.get(Calendar.DAY_OF_MONTH);
List<Integer> dayList = map.get(week);
if (dayList == null) {
dayList = new ArrayList<Integer>();
map.put(week, dayList);
}
dayList.add(day);
calendar.add(Calendar.DATE, 1);
}
//Check the result:
for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
System.out.println("Week: " + entry.getKey());
for (int day : entry.getValue()) {
System.out.println("Day: " + day);
}
}