Calendar类的概念和使用

1、基本概念

  java.util.Calender类主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化。
该类是个抽象类,因此不能实例化对象,其具体子类针对不同国家的日历系统,其中应用最广泛的
  是GregorianCalendar(格里高利历),对应世界上绝大多数国家/地区使用的标准日历系统。

2、常用的方法

过时Date构造函数与替代方法Calender gerInstance()之间的对比

package com.lagou.task13;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class CalenderTest{
    public static void main(String[] args) {
        //  1.使用过时的方法按照指定的年月日时分秒来构造对象
        Date d1 = new Date(2008-1900, 8-1, 8, 20, 8, 8);
        //  设置日期对象的格式并打印
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(d1);
        //  该方法已过时,在年份中需要扣除1900,月份中需要减1
        System.out.println("获取到的时间是:" + format);    //  3908-9-8 20-8-8

        System.out.println("-----------------------------------------------");
        //  2.取代的方式,按照指定的年月日时分秒来构造对象
        //  获取Calender类型的引用
        Calendar instance = Calendar.getInstance();
        //  设置指定的年月日时分秒信息
        instance.set(2008,8-1,8,20,8,8);    //  使用calender类中set方法,年份不需要减去1900月份需要减去1
        //  转换为Date类型的对象
        Date d2 = instance.getTime();
        String format1 = sdf.format(d2);
        System.out.println("获取到的时间是:" + format1);
    }
}

 

 

多态的第三种使用场合 :利用参数的返回值类型形成多态

System.out.println("-----------------------------------------------");
        //  3.向指定的字段设置以及增加指定的数值
        instance.set(Calendar.YEAR,2018);
        //  转换为Date类型并按照指定的格式打印
        Date d3 = instance.getTime();
        System.out.println("设置年份后的结果是:" + sdf.format(d3));

        //  增加两个月
        instance.add(Calendar.MONTH,2);
        Date d4 = instance.getTime();
        System.out.println("增加月份后的结果是:" + sdf.format(d4));

        //  笔试考点:既然Calender是个抽象类不能创建对象,那么上面的方法为啥可以获取Calender类型的引用呢?为什么getInstance()方法可以得到他的引用
        //  在源码中Calender new的不是自己的对象,所以这些类与Calender是父子类的关系;虽然在源码中return的是cal,但是实际上返回的是子类类型的对象形成多态
        //  多态的使用场合之三   ·
    }

3、多态的使用场合

通过方法的参数传递形成多态;
  public static void draw(Shape s){
    s.show();
  }
  draw(new Rect(1, 2, 3, 4));
在方法体中直接使用多态的语法格式
  Account acc = new FixedAccount();
通过方法的返回值类型形成多态
  Calender getInstance(){
    return new GregorianCalendar(zone, aLocale);
  }

posted @ 2020-11-03 15:29  IJLog  阅读(1279)  评论(0编辑  收藏  举报