当前位置: 代码迷 >> J2SE >> Java中关于Calendar第一个有关问题
  详细解决方案

Java中关于Calendar第一个有关问题

热度:5188   发布时间:2013-02-25 00:00:00.0
Java中关于Calendar第一个问题
想计算某天之后的日期是多少,但是结果让我有点意外,大家一起帮看下罢!
代码如下:
Java code
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不应该是该月中第几周吗,怎么出来的结果是这样的。请大家看看咯。
Java code
564========我是无耻的分割线=========564



------解决方案--------------------------------------------------------
Java code
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));
------解决方案--------------------------------------------------------
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值
------解决方案--------------------------------------------------------
楼上正确:
修改后输出:

8
252
2
========我是无耻的分割线=========
15
259
3

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