zoukankan      html  css  js  c++  java
  • Java8的时间日期API

    原先的时间 api  大部分已经过时了

    Date构造器 需要传入年月日  但是对时间的加减操作比较麻烦

    Calenda  加减比较方便 

    使用 LocalDate、 LocalTime、 LocalDateTime


     LocalDate、 LocalTime、 LocalDateTIme 类的实例是不可变的对象。分别使用ISO-8601日历系统的日期、时间、日期和时间。他们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。

      

    他们的使用方式一一模一样,但是专一程度不一样。专门表示日期,专门表示时间,表示时间好日期

    加减操作时候,有很多API可以使用的。根据情况场景自己选择。

    加法操作

     减法操作:

     

     @Test
        public void test1(){
            //方式一
            LocalDateTime dateTime1 = LocalDateTime.now();
            System.out.println(dateTime1);
    
            //方式二
            LocalDateTime dateTime2 = LocalDateTime.of(2018, 05, 21, 13, 22, 33);
            System.out.println(dateTime2);
    
           //获取的操作
            System.out.println( dateTime1.getYear());
            System.out.println(dateTime1.getHour());
        }

    以上是人读的,下面是计算机读的:

    Instant: 时间戳

       Unix元年, 1970年1月1日00:00:00 到某个时间之间的毫秒值

      

       @Test
        public void test(){
            Instant now = Instant.now();  //默认是获取的 UTC 时区
            System.out.println(now);
    
            OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));//相差8个时区的情况
            System.out.println(offsetDateTime);
            //各种属性值的获取
            System.out.println(now.getEpochSecond());
            //1000s
            Instant instant = Instant.ofEpochSecond(1000); //从unix时间开始加1000秒
            System.out.println(instant);
        }

    补充:

    API获取个各种属性

     

     计算两个时间的间隔:

      Duration: 计算两个时间之间的间隔

       Period: 计算两个日期之间的间隔

       @Test
        public void test3() throws InterruptedException {
           Instant now1 = Instant.now();
           Thread.sleep(1000);
           Instant now2 = Instant.now();
         //计算两个时间戳的间隔
           Duration between = Duration.between(now1, now2);
           System.out.println(between.getSeconds()); 
       

     这块儿API很多:

    duration也有很多API可以调用的!可以做加减运算!

     @Test
        public void test3() throws InterruptedException {
           Instant now1 = Instant.now();
           Thread.sleep(1000);
           Instant now2 = Instant.now();
         //计算两个时间戳的间隔
           Duration between = Duration.between(now1, now2);
           System.out.println(between.getSeconds());
    
           LocalTime now3 = LocalTime.now();
           Thread.sleep(1000);
           LocalTime now4 = LocalTime.now();
           System.out.println(Duration.between(now3, now4).toMillis());
       }

    日期的间隔:

     @Test
       public void test4(){
           LocalDate of = LocalDate.of(2016, 2, 5);
           LocalDate now = LocalDate.now();
           Period between = Period.between(now, of);
           System.out.println(between);
           System.out.println(between.getYears());
           System.out.println(between.getMonths());
       }

    获取当前月的第一天和最后一天 

    LocalDateTime date = LocalDateTime.now();
    LocalDateTime firstday = date.with(TemporalAdjusters.firstDayOfMonth());
    LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth());
    System.out.println(“firstday:” + firstday);
    System.out.println(“lastDay:” + lastDay);



  • 相关阅读:
    ThinkPHP模版引擎之变量输出具体解释
    Heat-AutoScaling
    開始搭建第一个zookeeper
    OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
    Oracle可插拔数据库的jdbc连接串写法
    MVVM设计模式基础知识--ICommand接口
    CodeForces
    一见钟情Sublime
    # 从零開始搭建Hadoop2.7.1的分布式集群
    C语言遍历文件和文件夹——————【Badboy】
  • 原文地址:https://www.cnblogs.com/toov5/p/10889368.html
Copyright © 2011-2022 走看看