java.time包下的所有类都是不可变类型而且线程安全, java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限
编号 | 类的名称 | 描述 |
---|---|---|
1 | Instant | 时间戳 |
2 | Duration | 持续时间,时间差 |
3 | LocalDate | 只包含日期,例如2020-05-04 |
4 | LocalTime | 只包含时间,例如23:12:10 |
5 | LocalDateTime | 包含日期和时间,例如2020-05-04 23:12:10 |
6 | Period | 时间段 |
7 | ZonedOffset | 时区偏移量,例如+8:00 |
8 | ZonedDateTime | 带时区的时间 |
9 | Clock | 时钟,获取当前北京时间 |
示例1:获取今天的日期
只有日期,不包含时间
LocalDate today = LocalDate.now();
System.out.println("今天的日期:"+today);//今天的日期:2022-06-01
示例2:获取年、月、日信息
LocalDate today = LocalDate.now();
int year = today.getYear();
int month = today.getMonthValue();
int day = today.getDayOfMonth();
System.out.println("year:"+year);//year:2022
System.out.println("month:"+month);//month:6
System.out.println("day:"+day);//day:1
示例3:处理特定日期
LocalDate date = LocalDate.of(2022,6,1);
System.out.println("自定义日期:"+date);//自定义日期:2022-06-01
示例4:判断两个日期是否相等
LocalDate date1 = LocalDate.now();
LocalDate date2 = LocalDate.of(2022,6,1);
if(date1.equals(date2)){
System.out.println("时间相等