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:该类代表一个时区化的日期、时间。