如果今天的日期是2014年7月19日 然后我的代码工作如下:
Calendar c = Calendar.getInstance();
我的代码和输出是:
c.roll(3, true);
System.out.print(c.get(Calendar.DATE) + " " + c.get(Calendar.MONTH) + " " + c.get(Calendar.YEAR));
o / p:26 6 2014
c.roll(2, true);
System.out.print(c.get(Calendar.DATE) + " " + c.get(Calendar.MONTH) + " " + c.get(Calendar.YEAR))
o / p:19 7 2014
c.roll(1, true);
System.out.print(c.get(Calendar.DATE) + " " + c.get(Calendar.MONTH) + " " + c.get(Calendar.YEAR))
o / p:2015年6月19日
roll now会将第一个参数添加到我的日期并给出答案。我写的?一旦它添加到一年到一个月...我没有得到这种方法的确切工作。请随时纠正我。
答案 0 :(得分:1)
请参阅roll()-method的javadoc。您应该使用预定义的Calendar-constants以提高可读性并避免错误。所以你的整数常量具有以下含义:
c.roll(1, true);
//实际上与c.roll(YEAR, true);
c.roll(2, true);
//实际上与c.roll(MONTH, true);
c.roll(3, true);
//实际上与c.roll(WEEK_OF_YEAR, true);
重要:请注意滚动与添加时间量不同的事实。如果你在12月份累积起来,那么你将在今年的一年中改为1月,而不是明年!所以我敢打赌你对使用1作为第二个参数的方法add(int, int)非常感兴趣。
答案 1 :(得分:0)
使用Calendar
中的字段常量,而不是传递整数常量。然后方法调用更有意义:
c.roll(Calendar.MONTH, true);
http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#YEAR http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#DAY_OF_MONTH http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#HOUR_OF_DAY