点X不NG 2016-08-05 10:03 采纳率: 0%
浏览 1154
已采纳

请大神解答,需要详细一些,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减去一天? 我快疯了

  • 写回答

7条回答 默认 最新

  • ErnestFei 2016-08-05 14:42
    关注

    首先第一个问题:在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都都能懂得。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?