jdk1.8中新的时间类LocalDate、LocalTime、LocalDateTime

164 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

1.8之前的jdk版本对于时间类型,使用的都是Date以及Calendar和SimpleDateFormat类来进行操作。

普遍使用方法都是

1.Date time = new Date();获取到当前时间

2.通过SimpleDateFormat来进行时间的格式化

3.通过Calendar来对时间进行操作(修改天数等)

JDK8新特性提供了3个时间类:LocalDate、LocalTime、LocalDateTime

1. LocalDateTime localDateTime=LocalDateTime.now();获取到当前时间

2.

   DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String localDateTimeStr=dateTimeFormatter.format(localDateTime);对时间进行格式化

虽然以上两点看起来都差不多 但是第三点开始区别就很大了

3.对LocalDateTime进行操作

****// 获取当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
// 获取LocalDate
LocalDate localDate2 = localDateTime.toLocalDate();
// 获取LocalTime
LocalTime localTime2 = localDateTime.toLocalTime();**
**

可以理解为把LocalDateTime分成了  “日期”与“时间”

4.对日期LocalDate进行操作

//获取当前日期
LocalDate localDate=LocalDate.now();
//打印年月日
System.out.println(localDate.toString());  
//打印年
System.out.println(localDate.getYear());   
//打印月
System.out.println(localDate.getMonth().getValue());   
//打印日   
System.out.println(localDate.getDayOfMonth());   
//打印日
System.out.println(localDate.getDayOfYear());   
//打印日  星期几
System.out.println(localDate.getDayOfWeek().getValue());   \

5.对时间LocalTime进行操作

// 获取当前时间
LocalTime localtime= LocalTime.now();
System.out.println(localtime);    --->  11:48:30.556    带有毫秒值
System.out.println(localtime.withNano(0))   --->11:48:30   不在毫秒值    还有withHour(0)等方法把小时设置为0
// 设置时间
LocalTime localTime = LocalTime.of(13, 51, 10);
//获取小时
int hour = localTime.getHour();    // 结果:13
int hour1 = localTime.get(ChronoField.HOUR_OF_DAY); // 结果:13
//获取分
int minute = localTime.getMinute();  // 结果:51
int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR); // 结果:51
//获取秒
int second = localTime.getSecond();   // 结果:10
int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE); // 结果:10**
6.** LocalDate、LocalTime、LocalDateTime为不可变对象,修改这些对象对象会返回一个副本。增加、减少年数、月数、天数等 以LocalDateTime为例。

//增加一年
localDateTime = localDateTime.plusYears(1);  
localDateTime = localDateTime.plus(1, ChronoUnit.YEARS);
//减少一个月
localDateTime = localDateTime.minusMonths(1); 
localDateTime = localDateTime.minus(1, ChronoUnit.MONTHS); 
//减少一天
LocalDateTime  localDateTime=date2LocalDateTime(new Date());
localDateTime = localDateTime.minus(1, ChronoUnit.DAYS);