全新API的众多好处之一就是明确了日期时间概念,例如:瞬时(instant)、长短(duration)、日期、时间、时区和周期。同时继承了Joda库按人类语言和计算机各自解析的时间处理方式。不同老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类且线程安全的。新版API中java.time包里的一些关键类:
- Instant:瞬时实例
- LocalDate:本地日期,不包含具体时间 例如:2014-01-14 可以用来记录生日、纪念日、加盟日等。
- LocalTime:本地时间,不包含日期。
- LocalDateTime:组合了日期和时间,但不包含时差和时区信息。
- ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。
java.time.LocalDate
只提供日期不提供时间信息
LocalDate localDate = LocalDate.now();
//
localDate.lengthOfMonth();
localDate.getMonth().name();
//2天之后
localDate.plus(2,ChronoUnit.DAYS);
//2天之前
localDate.minus(2,ChronoUnit.DAYS);
java.time.LocalTime
只提供时间而不提供日期信息
LocalTime localTime=LocalTime.now();
//小时
localTime.getHour();
//2个小时之后
localTime.plus(2,ChronoUnit.HOURS);
//6分钟之后
localTime.plusMinutes(6);
//2个小时之前
localTime.plus(2,ChronoUnit.HOURS);
java.time.LocalDateTime
提供时间和日期的信息
LocalDateTime localDateTime = LocalDateTime.now();
//2天之后
localDateTime.plus(2,ChronoUnit.DAYS);
//2天之前
localDateTime.minus(2,ChronoUnit.DAYS);
java.time.Year
提供年的信息
Year year = Year.now();
java.time.Duration
用来计算两个给定的日期之间包含多少秒,多少毫秒
java.time.Period
用户计算两个给定的日期之间包含多少天,多少月,或者多少年
LocalDate localDate = LocalDate.now();
Period period = Period.between(localDate,localDate.plus(2,ChronoUnit.DAYS));
period.getDays();
参考文章:
- http://blog.youkuaiyun.com/sf_cyl/article/details/51987088
- http://blog.youkuaiyun.com/bangrenzhuce/article/details/52270232
- http://www.cnblogs.com/exmyth/p/6425878.html
- http://www.blogjava.net/4cai/archive/2014/04/29/413041.html