![](/img/trans.png)
[英]GregorianCalendar setFirstDayOfWeek not affecting WEEK_OF_YEAR on pre Nougat
[英]How to get list of dates inside the WEEK_OF_YEAR in android?
例如:給定的月= 2,給定的年= 2014,我使用以下代碼獲取了星期列表。 為什么我為月份申請1是默認情況下月份僅從索引開始。
樣本代碼:
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);
}
結果:周=> [8、9、5、6、7]
得到此結果后,我如何能獲得一周中的可用日期。 2014年2月,第5周,只有一天(星期六)。 剩下的星期有7天,最后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
有人指導我像上面的結果一樣獲得這個List < Key,datelist >對。
您為什么要先在幾周收集一次,然后再查找一周中的幾天? 由於您已經遍歷了一個月的所有天,因此只需創建一個地圖,其中將星期作為鍵,將天列表作為值。
像這樣:
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.