Java SE 11& JDK 11 API

1.Date

Date类表示特定的时刻,精度为毫秒。
在JDK 1.1之前, Date类还有两个附加功能。 它允许将日期解释为年,月,日,小时,分钟和秒值。 它还允许格式化和解析日期字符串。 不幸的是,这些功能的API不适合国际化。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,而DateFormat类应该用于格式化和解析日期字符串。 不推荐使用Date中的相应方法。

构造方法
1.Date()
分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒。
2.Date(long date)
分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
常用方法

  1. boolean after(Date when)
    测试此日期是否在指定日期之后。
  2. boolean before(Date when)
    测试此日期是否在指定日期之前。
  3. getTime()
    返还一个long类型的自1970年1月1日00:00:00 GMT以来的毫秒数。

2.DateFormat

DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化和分析日期或时间。 日期/时间格式化子类(例如SimpleDateFormat )允许格式化(即,日期→文本),解析(文本“日期”)和规范化。 日期表示为Date对象或自1970年1月1日00:00:00 GMT以来的毫秒数。
使用DateFormat前需要创建一个他的子类SimpleDateFormat
SimpleDateFormat
构造方法:
1.SimpleDateFormat(String pattern)
构造一个 SimpleDateFormat使用给定的模式和默认的默认日期格式符号 FORMAT区域设置。
例如:

SimpleDateFormat dateformat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss ");

常用方法:
1.format(Date date)
将Date格式化为日期时间字符串。
2.parse(String text, ParsePosition pos)
将“yyyy-MM-dd HH:mm:ss "日期字符串,转化为date对象。

public class Demo1 {
    public static void main(String[] args) throws ParseException {
        //设定时间模式
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //将当前时间转化为字符串
        String time=dateformat.format(new Date());
        //打印当前时间
        System.out.println(time);
        
        //将目标时间转化为Date对象
        Date date = dateformat.parse("2017-02-21 14:17:00");
        //计算时间差(换算为年)
        System.out.println((double)(new Date().getTime()-date.getTime())/1000/60/60/24/365);//3.5431655279363268

    }
}

3.Calendar

所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 瞬间可以用毫秒值表示,该值是1970年1月1日格林威治标准时间1970年1月1日00:00:00,000(格里高利)的Epoch的偏移量。
该类还提供了用于在包外实现具体日历系统的附加字段和方法。 这些字段和方法定义为protected 。

与其他区域设置敏感的类一样, Calendar提供了一个类方法getInstance ,用于获取此类型的通用对象。 Calendar的getInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance();

常用方法
1.add(int field, int amount)
根据日历的规则,将指定的时间量添加或减去给定的日历字段。
2.get(int field)
返回给定日历字段的值。
3.set(int field, int value)
将给定的日历字段设置为给定值。
4.getTime()
返回一个 Date对象,表示此 Calendar的时间值(距离 Epoch的毫秒偏移量)。
5.getActualMaximum(int field)
给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar 。
5.getActualMinimum(int field)
给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar 。

public class Demo1 {
    public static void main(String[] args) throws ParseException {
        Calendar cl = Calendar.getInstance();
        //获取当前日历年份
        int year = cl.get(Calendar.YEAR);

        System.out.println(year);//2020
        //获取当前日历的日
        int day=cl.get(Calendar.DAY_OF_YEAR);
        System.out.println(day);//250
        //设置日历时间
        cl.set(Calendar.YEAR,2017);
        //对当前日历进行增加(计算机日历中,年是从0-11)
        cl.add(Calendar.YEAR,3);
        int year2 = cl.get(Calendar.YEAR);
        System.out.println(year2);//2020

        //计算当前年份的最大天数
        int d = cl.getActualMaximum(Calendar.DAY_OF_YEAR);
        System.out.println(d);//366

        //计算当前月数的最大天数
        int m = cl.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(m);//30

  
    }
}