想计算某天之后的日期是多少,但是结果让我有点意外,大家一起帮看下罢!
代码如下:public static void main(String[] args) {

String dateStr="2012-9-8";
SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd");
Date date=null;
try {
date=sdf.parse(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal=Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.DAY_OF_MONTH);
System.out.println(cal.DAY_OF_YEAR);
System.out.println(cal.WEEK_OF_MONTH);
                  cal.add(cal.DATE, 7);
System.out.println("========我是无耻的分割线=========");
System.out.println(cal.DAY_OF_MONTH);
System.out.println(cal.DAY_OF_YEAR);
System.out.println(cal.WEEK_OF_MONTH);
}比如:想计算9月8号之后的7天后的时间。cal.DAY_OF_MONTH打印的不应该是当月的第几天吗,DAY_OF_YEAR不应该是一年中的第几天吗,WEEK_OF_MONTH不应该是该月中第几周吗,怎么出来的结果是这样的。请大家看看咯。5
6
4
========我是无耻的分割线=========
5
6
4

解决方案 »

  1.   

    cal.setTime(date);
    System.out.println(cal.get(Calendar.DAY_OF_WEEK));
    System.out.println(cal.get(Calendar.DAY_OF_YEAR));
    System.out.println(cal.get(Calendar.WEEK_OF_MONTH));
    cal.add(Calendar.DATE, 7);
    System.out.println("========我是无耻的分割线=========");
    System.out.println(cal.get(Calendar.DAY_OF_WEEK));
    System.out.println(cal.get(Calendar.DAY_OF_YEAR));
    System.out.println(cal.get(Calendar.WEEK_OF_MONTH));
    DAY_OF_WEEK这些方法都是返回的fields,要从里面get才能拿到这个值
      

  2.   

    System.out.println(cal.get(5));
    System.out.println(cal.get(6));
    System.out.println(cal.get(4));和System.out.println(cal.get(Calendar.DAY_OF_WEEK));
    System.out.println(cal.get(Calendar.DAY_OF_YEAR));
    System.out.println(cal.get(Calendar.WEEK_OF_MONTH));是一样的结果,你最初拿到的是calendar里面的field值
      

  3.   

    楼上正解。cal.DAY_OF_WEEK等一系列方法都是返回对应的字段的数值,需要使用get方法才能获取到具体的值。意思就是说,DAY_OF_WEEK,DAY_OF_YEAR,WEEK_OF_MONTH这些字段在Calendar类中都有对应的值,通过该值可以获取到相应的值。