java8 日期api使用

Posted 分错

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java8 日期api使用相关的知识,希望对你有一定的参考价值。

    java8以前对日期的处理不是很方便,想要对日期进行加减,比较两个日期的间隔处理非常繁琐,java8对日期重新实现了一套api,位于java.time包下。

    LocalDate  只显示日期

    LocalTime 只显示时间

    LocalDateTime 既包括日期又包括时间

    Instant  时间戳

    ZoneId  时区

1 用法:

   LocalDate ,LocalTime,LocalDateTime 这几个类的构造方法都是private,但他们都提供了静态的方法来实例化对象。

   1.1  of(int year, Month month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)

          of方法可以传入特定的值,构造特定的时间日期:

     LocalDate localDate= LocalDate.of(2012,3,2);
LocalTime localTime = LocalTime.of(13, 1, 11);
LocalDateTime localDateTime = LocalDateTime.of(2012, 3, 2,13,1,11);
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);

             2012-03-02
             13:01:11
             2012-03-02T13:01:11

    1.2 now()

           now方法获取系统的当前时间,默认为系统时区,提供了重载的方法now(ZoneId  )可以传入指定的时区

    1.3 parse()

          parse方法可以接受一个时间字符串,和一个格式化模式

2 运算

    2.1 每个类都提供了加(plus)减(minus)运算方法,可以很方便的计算前一天后一天

    2.2 每个类都提供了判断两个日期先后的方法isAfter,isBefore

    2.3 计算两个日期的间隔

    Duration between = Duration.between(localDateTime,localDateTime);

    2.4 格式化输出

         format可以可以接受一个DateTimeFormatter,以给定的格式化为一个字符串

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

 

3 与Date的互相转化

      两者转化都是转化为对应的时间戳,通过时间戳去转化

    3.1 date 转LocalDate

  date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()

    3.2  LocalDate转date

   Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant())

   

   

 

以上是关于java8 日期api使用的主要内容,如果未能解决你的问题,请参考以下文章

java8新特性学习六(新时间日期API)

java8新特性学习六(新时间日期API)

java8 日期api使用

Java8 日期时间API

为什么不建议使用Date,而是使用Java8新的时间和日期API?

Java8 日期时间API