Java8的日期、时间类

时间:2021-05-13 22:09:42

      JAVA提供了Date和Calendar用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。
一、Date类(java.util.Date)
常用的两个构造方法:
      1. Date();
      2. Date(long date);
常用的方法:
      boolean after(Date when)
      boolean before(Date when)
      long getTime();
      void setTime();
      System.currentTimeMills();
二、Calendar类
      因为Date类在设计上存在一些缺陷,所以Java提供了Calendar类更好的处理日期和时间。Calendar是一个抽象类,它用于表示日历。Gregorian Calendar,最通用的日历,公历。
      Calendar与Date都是表示日期的工具类,它们直接可以*转换。

Calendar calendar = Calendar.getInstance();//创建一个默认的Calendar对象
Date date=calendar.getTime();从Calendar对象中取出Date对象
//通过Date对象获取对应的Calendar对象
//因为Calendar/GregorianCalendar没有构造函数可以接受Date对象
//所以必须先获取一个Calendar实例,然后调用其setTime()
Calendar calendar2=Calendar.getInstance();
Calendar2.setTime(date);

Calendar类提供了大量访问、修改日期时间的方法:
      void add(int field,int amount):给定日历字段增加或减去指定时间量
      int get(int field):返回指定日历字段的值
      int getActualMaximum(int field):返回指定日历字段可能拥有的最大值
      int getActualMinimum(int field):返回指定日历字段可能拥有的最小值
      void roll(int field,int amount):与add()方法类型,但不会进位
      void set(int field,int amount):给指定的日历字段设置为给定值
      void set(int year,int month,int date):设置Calendar对象的年、月、日三个字段的值
      void set(int year,int month,int date,int hourOfDay,int minute,int second) :设置Calendar对象的年、月、日、时、分、秒三个字段的值
      Field是Calendar的类变量,如Calendar.YEAR
三、Java8新增java.time包
      Clock:该类用于获取指定时区的当前日期、时间。
      Duration:该类代表持续时间。
      Instant:代表一个具体的时刻,可以精确到纳秒。
      LocalDate:该类代表不带时区的日期。
      LocalTime:该类代表不带时区的时间。
      LocalDateTime:该类代表不带时区的日期、时间。
      MonthDay:该类仅代表月日。
      YearMonth:该类仅代表年月。
      ZonedDateTime:该类代表一个时区化的日期、时间。