请大神解答,需要详细一些,10c币送走,

  int year = calendar.get(1);
    int month = calendar.get(2) + 1;
    int day = calendar.get(5);
    int weekIndex = calendar.get(4);
    int dayIndex = calendar.get(7);

    boolean isFirstSunday = calendar.getFirstDayOfWeek() == 1;

    if (isFirstSunday) {
      dayIndex -= 1;
      if (dayIndex == 0)
        dayIndex = 7;

    } 

这个canlendar给它传一个long类型的日期,为什么get(2)获取的月份是七月 ,现在是八月,还有这个get(4)和(7)得出来的值是每周的第一天和每月的第一周吗? 这个getfirstdayofweekAPI说是返回一周的第一天,那么返回值除了1还有别的值?最后请大神讲解下那个判断和赋值,为什么一周的第一天是一 就需要dayindex减去一天? 我快疯了

首先第一个问题:在java JDK中 Calender 这个日历类中,get(int field) 返回给定日历字段的值。API中定义一个关于月份常量这样定义的:
public final static int MONTH = 2;
上面你的calender.get(2),就相当于Calender.get(Calender.MONTH)就是说是当前的月份减1 所以便+上1,就是当前的月份数
第二个?:get(4)中的4 表示的是Calender.WEEK_OF_MONTH 返回的是当天是这个月的第几周~~~ API定义为: public final static int WEEK_OF_MONTH = 4;
get(5) 5表示:Calender.DATE 返回今天是这个月的第几天~~~ public final static int DATE = 5;

get(7) 7表示:Calender.DAY_OF_WEEK 返回今天是这个星期的第几天(从周日为第一天计算)~~~ public final static int DAY_OF_WEEK = 7;

第三个问题:calendar.getFirstDayOfWeek() 这个返回的值为1,是根据美国的时间来指定的,相当于API中默认的calendar.setFirstDayOfWeek(Calendar.SUNDAY); 这个方法,Calendar.SUNDAY 值为1的,其中如果将其改变成你自己的默认值calendar.setFirstDayOfWeek(2);时,
你的到calendar.getFirstDayOfWeek() 的值就是为2了!!!明白了么,其实看看API都都能懂得。

好多是从0开始计数的

http://blog.csdn.net/joyous/article/details/9630893

get(n):n=1 返回年;n=2返回月(按0-11表示,所以加1);dayindex表示一周的第几天,默认周日是第一天,以此类推,最后的处理就是想调整为周日为第七天,周一为第一天。

int getFirstDayOfWeek()

获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。

为什么get(2)获取的月份是七月 ,现在是八月:
反人类设计,计数从 0 开始,0,1,2,3...;对应 1,2,3,4...刚接触 c语言时就有人讲过吧就是这个意思,规定没办法;
Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。所以要 +1;

那个week 周一到周日对应,2,3,4,5,6,7,1;周日对应第一个数

1:2016 年
2:7 月8 = 7+1
3:32
4:1 每月的第几周
5:6 6 号
6:219 第219 tia
7:7 一周的第几天

其实你没必要这样记,像这样用的也不常见

   System.out.println(calendar.get(Calendar.DATE));
  int  dayOfMonth= calendar.get(Calendar.DAY_OF_MONTH);//今天是这个月的第几天
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//今天是这一周的第几天
    类似的好理解也好记,Calendar.DAY_OF_WEEK,

      calendar.get(Calendar.MONTH);
        calendar.get(Calendar.HOUR_OF_DAY);
        calendar.get(Calendar.HOUR);

在法国,这一天是 MONDAY。