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

标签 android date calendar android-calendar weekday

例如: 给定月份 = 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/

相关文章:

android - 无法从 Android 上的 xmpp 服务器获取公共(public)房间列表?

android - android中的共享功能

android - onLowMemory 如何在 android 上工作?

r - R不知道时间是循环的吗?如何找到一天中最接近给定时间的时间

ruby-on-rails - jQuery UI DatePicker 允许过去的日期,今天显示

java.lang.NoSuchFieldError : No static field MAXICODE of type Lcom/google/zxing/BarcodeFormat; in class Lcom/google/zxing/BarcodeFormat; 错误

JavaScript 添加 hh :mm + hh:mm to get new hh:mm

JavaScript : Error for increment seconds

android - 如何在模拟器中使用和测试Android 4.0 Calendar API?

android - 各种 API 上的日历