想计算某天之后的日期是多少,但是结果让我有点意外,大家一起帮看下罢!
代码如下:
- 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类中都有对应的值,通过该值可以获取到相应的值。