gpt4 book ai didi

android - 如何在 android 中获取 WEEK_OF_YEAR 内的日期列表?

转载 作者:行者123 更新时间:2023-11-30 03:08:04 25 4
gpt4 key购买 nike

例如:给定月份 = 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年二月,第五周只有一天(星期六)。除最后 9 周外,其余周有 7 天。

我期望的格式:

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> 对,如上面的结果。

最佳答案

为什么要先收集周数,然后再求星期几。由于您已经遍历了一个月中的所有日子,因此您可以创建一个 map ,其中以周为键,以天数列表为值。

有点像:

    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);
}
}

关于android - 如何在 android 中获取 WEEK_OF_YEAR 内的日期列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com