簡體   English   中英

如何在Android中獲取WEEK_OF_YEAR內的日期列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM