java学习笔记17(Calendarl类)

Calendar类:(日历)

  用法:Calendar是一个抽象类;不能实例化(不能new),使用时通过子类完成实现,不过这个类不需要创建子类对象,而是通过静态方法直接获取;

  获取对象方法:getInstance();

  getInstance()方法:官方文档:使用默认时区和语言环境获得一个日历。

    getInstance(Locale aLocale)   使用默认时区和指定语言环境获得一个日历。

    getInstance(TimeZone zone)     使用指定时区和默认语言环境获得一个日历。

    getInstance(TimeZone zone, Locale aLocale)    使用指定时区和语言环境获得一个日历。

示例:

public class Demo1 {
    public static void main(String[] args) {
        Calendar ca=Calendar.getInstance();//创建一个日历的对象ca;通过getInstance()方法创建日历对象,
        System.out.println(ca);
        /*输出结果:
         * java.util.GregorianCalendar[time=1553060892101,areFieldsSet=true,areAllFieldsSet=true,lenient=true,
         * zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,
         * transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=2,
         * WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,
         * AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=48,SECOND=12,MILLISECOND=101,ZONE_OFFSET=28800000,DST_OFFSET=0]
         */
        /*输出结果我们可以看出,里边有很多东西,我们可以大致辨认出第三行有YEAR=2019,MONTH=2,
         * WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,
         * 意思是2019年,3月(Calendar中默认的是0-11月,所以实际月份要加1),一年的第12周,一个月的第四个星期,一个月的第20天,一年的第79天,一周的第四天(美国默认一周的周日是一星期的开始)
         * */
    }
}

为了把上面运行结果显示出来,只显示我们想要的,会用到一些方法:

get方法:

import java.util.Calendar;

public class Demo2 {
    public static void main(String[] args) {
        Calendar ca=Calendar.getInstance();
        int year=ca.get(Calendar.YEAR);//获得ca日历年份
        int month=ca.get(Calendar.MONTH)+1;//获得月份,日历默认月份0-11月,所以要加1才是是实际月份;
        int day=ca.get(Calendar.DAY_OF_MONTH);//获得天数
        System.out.println(year+"年"+month+"月"+day+"日");//2019年3月20日
    }
}

set()方法:

public class Demo3 {
    public static void main(String[] args) {
        Calendar ca=Calendar.getInstance();//创建日历ca
        Date d=ca.getTime();//getTime()方法: 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
        System.out.println(d);//输出时间:Wed Mar 20 14:35:19 CST 2019
        ca.set(1996, 6, 27);//set(year, month, date);设置日历的年月日
        Date d1=ca.getTime();
        System.out.println(d1);//Sat Jul 27 14:38:23 CST 1996
    }
    /*可以看出日历的时间变了,set方法将日历的时间改为了1996年6月27日*/
}

add方法:官方资料:add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。

import java.util.Calendar;

public class Demo {
    public static void main(String[] args) {
        Calendar ca=Calendar.getInstance();
        getdate(ca);//2019-2-20
        ca.add(Calendar.YEAR, 1);//年份加一
        getdate(ca);//2020-2-20
        ca.add(Calendar.MONTH, 4);//月份加四
        getdate(ca);//2020-7-20
        ca.add(Calendar.DAY_OF_MONTH, -10);//日期减十天
        getdate(ca);//2020-7-10
    }
    private static void getdate(Calendar ca) {
        // 创建显示日期方法,将日历变为容易观察的样式,方便上面调用查看
        System.out.println(ca.get(Calendar.YEAR)+"-"+(ca.get(Calendar.MONTH)+1)+"-"+ca.get(Calendar.DAY_OF_MONTH));
    }
}

Calendar类综合练习:

计算闰年:

import java.util.Calendar;
import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        Calendar c=Calendar.getInstance();//getInstance()方法:
        System.out.println("请输入年份:");
        int year=new Scanner(System.in).nextInt();
        c.set(year, 2, 1);//set()设置日历字段年月日,在日历中是0-11月,所以这里写的是二月,实际日期是3月一日,本句中设置日历c为3月1日;
        c.add(Calendar.DAY_OF_MONTH, -1);//add根据日历的规则,为指定日历字段添加或减去指定的时间量,本句中给c日历当前日期减去一天;
        int day=c.get(Calendar.DAY_OF_MONTH);//定义变量day接收c当前的日期;DAY_OF_MONTH指定一个月中的某天
        if(day==29){
            System.out.println("是闰年");
        }else{
            System.out.println("不是闰年");
        }
    }
}

运行结果:

原文地址:https://www.cnblogs.com/Zs-book1/p/10564496.html