Java提供了Date和Calendar用于处理日期、时间的类,但是Date无法实现国际化,且对不同属性使用了前后矛盾的偏移量,比如月份与小时都是从0开始,月份中的天数却是从1开始的,年又是从1900年开始。而Calendar则显得过于复杂。因此Java 8 提供了一套全新的日期时间库。
一、Date类
- 通常使用的是java.util包下的
- 构造方法: Date date = new Date();该构造器会在底层调用System.currentTimeMillis()获得long整数作为日期参数。即这个方法获得的时间是系统当前时间
- 常用方法:
- boolean before(Date when): date1.before(date2): 比较date1时间是否在date2之前
- boolean after(Date when);测试该日期是否在指定日期之后
- setTime(long time);设置Date对象的时间
- long getTime(); 返回该时间对应的long型整数
4.设置Date类时间格式:DateFormat类
该类是抽象类,需要子类才能使用,所以通常使用其子类:SimpleDateFormat类来处理Date类的格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH-mm-ss”);
String v = sdf.format(new Date())//将当前日期以指定格式返回,并转化成字符串
或者
Date d = sdf.parse("2019-10-11 11:57:00")
注意:在多线程下,SimpleDateFormate是非线程安全的。
二、Calendar类
Calendar类是一个抽象类,它用于表示日历。
- java.util包下
- 有构造方法,用protected修饰,通常访问不到。需要调用默认的getInstance()方法
- Calendar caledar = Calendar.getInstance(); //系统当前时间的对象
- void set(int year,int month,int date):设置Calendar对象的年、月、日三个字段的值。因为月份是从0开始