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

请大神解答,需要详细一些,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条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器