1.概述
总结一下最近在做的关于Calenda类的东西。
Calenda提供了丰富的api通过Calenda的Year,Month,Day,Hour...这些关于日期的常量字段指定具体的日期和时间。和java.util.Date()相互转换。
2.基本使用
和java.util.Date()之间的相互转换。
package demo; import java.util.Calendar; import java.util.Date; public class Demo { public static void main(String[] args) { //实例化 Calendar c = Calendar.getInstance(); //设置时间Date转Calendar c.setTime(new Date()); //Calendar转Date Date d = c.getTime(); } }
3.常用api
如何手动指定各个字段:
@Test public void testAPi(){ Calendar c = Calendar.getInstance(); //指定年 c.set(Calendar.YEAR, 2018); //指定月,month是从0开始,3即是4月 c.set(Calendar.MONTH, 3); //日,从0开始DAY_OF_MONTH=DATE c.set(Calendar.DAY_OF_MONTH, 3); //时,HOUR:代表12小时制(0-11) HOUR_OF_DAY:24小时(1-24) c.set(Calendar.HOUR_OF_DAY, 16); //分 c.set(Calendar.MINUTE, 20); //秒 c.set(Calendar.SECOND, 30); //最终结果 2018-4-3 16:20:30 }
4.一些稍微高级点的应用
1.求指定月份的第一天
public static Date getFirstDayOfMonth(Date date){ // Calendar c = Calendar.getInstance(); c.setTime(date); //求指定月份的第一天 //设置天c.getActualMinimum(Calendar.DAY_OF_MONTH)返回当前月份的第一天(其实可以直接返回1号....) c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH)); //还可以设置一些时分秒,要不然时分秒是随机的 c.set(Calendar.HOUR_OF_DAY, 0); //分 c.set(Calendar.MINUTE, 0); //秒 c.set(Calendar.SECOND, 0); return c.getTime(); }
2.求指定月份的最后一天
public static Date getLastDayOfMonth(Date date){ // Calendar c = Calendar.getInstance(); c.setTime(date); //求指定月份的最后一天 //设置天c.getActualMaximum(Calendar.DAY_OF_MONTH)返回当前月份的最后一天 c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); //还可以设置一些时分秒,要不然时分秒是随机的 c.set(Calendar.HOUR_OF_DAY, 23); //分 c.set(Calendar.MINUTE, 59); //秒 c.set(Calendar.SECOND, 59); return c.getTime(); }
3.延伸的也可以根据上面的也可以求某个季度的第一天,最后一天等。也可以求过了多少天(最大天数-当前天)
求当月还剩多少天
public static int leftDays(Date d){ Calendar c = Calendar.getInstance(); c.setTime(d); //一共多少天 int actualMaximum = c.getActualMaximum(Calendar.DAY_OF_MONTH); int day = c.get(Calendar.DAY_OF_MONTH); return actualMaximum-day; }