Java 8 新日期和时间API

239 阅读1分钟

  • LocalDate

日期类(例:2018-02-08)只包含日期,不可变类,类定义:

public final class LocalDate
    implements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable
LocalDate now = LocalDate.of(2018,3,19);//带检查
*** 2018-03-19
LocalDate now = LocalDate.now();
***  2018-02-08
//将字符串转成LocalDate,无法解析时抛异常
LocalDate parse = LocalDate.parse("2018-03-29");

log.info(""+ now.getYear());  //2018
log.info(""+ now.getMonth()); //FEBRUARY
log.info(""+ now.getMonthValue()); //2
log.info(""+now.getDayOfMonth()); //8
log.info(""+now.getDayOfWeek()); //THURSDAY
log.info(""+now.getDayOfYear()); //39
log.info(""+now.isLeapYear()); //false
log.info(""+now.lengthOfMonth()); //28
log.info(""+now.lengthOfYear()); //365


  • LocalTime 时间类,不可变类,类定义如下
public final class LocalTime
    implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable {

LocalTime nowTime = LocalTime.now();
*** 16:26:32.438
LocalTime nowTime = LocalTime.of(15,30);
*** 15:30
LocalTime nowTime = LocalTime.of(15,30,20);
*** 15:30:20
//将字符串转成LocalTime,无法解析时抛异常
LocalTime parse1 = LocalTime.parse("15:12:25");
log.info(""+nowTime.getHour());//16
log.info(""+nowTime.getMinute());//27
log.info(""+nowTime.getSecond());//28
log.info(""+nowTime.getNano()); //299000000

  • LocalDateTime 日期时间类,不可变类,类定义如下
public final class LocalDateTime
    implements Temporal, TemporalAdjuster, ChronoLocalDateTime<LocalDate>, Serializable {

LocalDateTime localDateTime = LocalDateTime.of(2018, 2, 14, 15, 23, 24);
*** 2018-02-14T15:23:24
LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.now());
LocalDateTime localDateTime = LocalDate.now().atTime(LocalTime.now());
LocalDateTime localDateTime = LocalTime.now().atDate(LocalDate.now());

LocalDate localDate = localDateTime.toLocalDate();
LocalTime localTime =localDateTime.toLocalTime();

  • Period 时间间隔类,不可变类,类定义如下:
public final class Period
    implements ChronoPeriod, Serializable
LocalDate now = LocalDate.now();
log.info(""+ now); //2018-02-08
LocalDate parse = LocalDate.parse("2017-02-09");
Period between = Period.between(parse, now);//P11M30D
log.info(""+between.getYears()); //0
log.info(""+between.getMonths());//11
log.info(""+between.getDays());//30