java操作之LocalDate,LocalTime,LocalDateTime基本使用

Posted by wotrd on 08-07,2019

java操作之Date、LocalDate,Calendar基本使用

java的Date,Calendar类型使用不方便,而且Date类线程不安全,LocalDateTime是Java8推出的线程安全、简易、高可靠的时间包。并且数据库中也支持类型,在数据存储时候使时间变得简单。Java8推出的包括三个相关的时间类型:LocalDateTime年月日十分秒;LocalDate日期;LocalTime时间;三个包的方法都差不多。

LocalDateTime的一些用法

LocalDateTime.now();
LocalDate.now();
LocalTime.now();
localDateTime3.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime localDateTime4 = 	localDateTime3.minus(23,ChronoUnit.MONTHS);
localDateTime4.atZone(ZoneId.systemDefault());
localDateTime4 = localDateTime4.withHour(3);
localDateTime4 = localDateTime4.withYear(2016);
localDateTime4 = localDateTime4.with(ChronoField.MONTH_OF_YEAR,3)

间隔计算

使用Duration进行 day,hour,minute,second等的计算 使用Period进行Year,Month的计算

Duration duration = Duration.between(localDateTime,localDateTime4);
duration.toDays();
duration.toHours();
duration.toMinutes();
Period period2 = Period.between(localDateTime.toLocalDate(),localDateTime4.toLocalDate());
period2.getYears();
period2.getMonths();
period2.toTotalMonths();

与Date的转化,format为String

Date date = Date.from(localDateTime4.atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault());

localDateTime3.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

通过localdatetime获取long型毫秒时间

LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();