Java8新特性——新时间日期API
在Java8之前,时间日期API存在线程安全的问题,多线程情况下需要加锁,并且使用起来也比较不方便。Java8为我们提供了新的时间日期API。这篇文章,我们一起来使用下。
1. 使用LocalDate、LocalTime、LocalDateTime
LocalDate
、 LocalTime
、 LocalDateTime
类的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。
注: ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法
接下来,我们就以LocalDateTime
为例,其它2个类使用方法一样,这里不再赘述。
- 获取当前时间:
/**
* 获取当前时间
*/
@Test
public void test1() {
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
}
Output:
2019-05-30T21:36:49.269
- 根据字符串创建指定日期对象
/**
* 创建指定日期
*/
@Test
public void test2(){
LocalDateTime dateTime = LocalDateTime.of(2019, 5, 30, 21, 41, 10);
System.out.println(dateTime);
}
Output:
2019-05-30T21:41:10
- 日期加减运算
/**
* 日期加减运算
*/
@Test
public void test3(){
LocalDateTime now = LocalDateTime.of(2019, 5, 30, 21, 45, 10);
LocalDateTime plusTime = now.plusYears(1) // 加一年
.plusMonths(2) // 加2月
.plusDays(3) // 加三天
.plusHours(4) // 加4小时
.plusMinutes(5) // 加5分钟
.plusSeconds(6); // 加6秒
System.out.println(plusTime);
LocalDateTime minusTime = now.minusYears(1) // 减一年
.minusMonths(2) // 减2月
.minusDays(3) // 减 3天
.minusHours(4