繁体   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