网上那么多java的文章,为什么要看我的?
系统全面:网上文章东一篇西一篇,自己都看晕了吧。就跟着我这个路线学,学不会你找我。
码字不易,请大家关注公众号,转发,点赞,只需动动手指,还送视频,只为成就你!
问题
在上一案例的基础上,获取2013年各个月份的天数。
方案
首先,使用Calendar类的getInstance方法获取当前日期-时间;然后该日期-时间为2013年,日为1日;最后,使用循环,循环从1月循环到12月,在循环中修改当前日期-时间对象的月份,可以使用getActualMaximum方法获取各个月份的天数,该方法的声明如下:
getActualMaximum(int field)
该方法表示给定此Calendar的时间值,返回指定日历字段可能拥有的最大值。可以指定日期字段为Calendar.DATE。
步骤
步骤一:构建测试方法
首先,使用Calendar类的getInstance方法获取当前日期-时间;然后,修改该日期-时间为2013年,日为1日,代码如下所示:
package day03;
import java.util.Calendar;
import java.util.GrogorianCalendar;
import org.junit.Test;
public class TestCalendar{
/**
*输出某一年的各个月份的天数
*/
@Test
public void testGetActualMaximum(){
int year=2013;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,year);
c.set(Calendar.DATE,1);
}
}
步骤二:使用getActualMaximum方法
使用循环,循环从1月循环到12月,在循环中修改当前日期-时间对象的月份,可以使用getActualMaximum方法获取各个月份的天数,代码如下所示:
package day03;
import java.util.Calendar;
import java.util.GrogorianCalendar;
import org.junit.Test;
public class TestCalendar{
/**
*输出某一年的各个月份的天数
*/
@Test
public void testGetActualMaximum(){
int year=2013;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,year);
c.set(Calendar.DATE,1);
for(int month=Calendar.JANUARY;month<=Calendar.DECEMBER;month++){
c.set(Calendar.MONTH,month);
System.out.println(year+"年"+(month+1)+"月:"+c.getActualMaximum(Calendar.DATE)+"天");
}
}
}
此处需要注意的是,Calendar.MONTH字段表示月份,月份的起始不是1,而是0,所以需要在取到的月份值的基础上加1才能与实际的月份对应。
步骤三:运行
运行testGetActualMaximum方法,控制台输出结果如下所示:
2013年1月:31天
2013年2月:28天
2013年3月:31天
2013年4月:30天
2013年5月:31天
2013年6月:30天
2013年7月:31天
2013年8月:31天
2013年9月:30天
2013年10月:31天
2013年11月:30天
2013年12月:31天
从输出结果可以看出,已经将2013年的各个月对应的天数获取到了。