zoukankan      html  css  js  c++  java
  • Java8-time类

    day01

    java8 新的日期和时间API

    • java8之前的时间和日期

      1. 只能依赖java.util.Date类,这个类无法表达日期,只能以毫秒的精度表示时间

        Date date = new Date();
        System.out.println(date);
        //输出结果:Mon Jun 08 10:14:31 CST 2020
        
      2. Java1.1中的java.util.Calendar也存在类似的问题和缺陷。

      3. DateFormat方法也有一些自己的问题,比如线程不安全。

    • Java8-LoaclDate、LoaclTime、LocalDateTime

      1. LocalDate

        • LocalDate的实例是不可变对象,他只提供了简单的日期,并不包含当天的时间信息和时区信息。
        • 通过静态工厂of来创建实例。
        public static void main(String[] args) {
                LocalDate of = LocalDate.of(2020, 6, 8);
                System.out.println(of);
            }
        //输出结果:2020-06-08
        
        • 通过LocalDate.now()获得当前日期。
        public static void main(String[] args) {
                LocalDate now = LocalDate.now();
                System.out.println(now);
            }
        //输出结果:2020-06-08
        

        image-20200608102944514

        可在LocalDate中获取到单独的年份,月份,星期几等。也可通过get()方法传入ChronoField枚举来获取到这些元素。

      2. 与LocalDate类似,LoaclTime则是来获取并操作时间的。

        • LoaclTime也可使用of来创建实例
        public static void main(String[] args) {
                LocalTime now = LocalTime.of(10,36,55);
                System.out.println(now);
            }
        //输出结果:10:36:55
        
        • LocalTime.now()获取当前时间。
        public static void main(String[] args) {
                LocalTime now = LocalTime.now();
                System.out.println(now);
            }
        //输出结果:10:38:32.688
        

        image-20200608103939917

        也可以获取当前的时、分、秒。

      3. LocalDateTime是LocalDate二号LocalTime的合体,同时表示了时间和日期,但不带时区。

         public static void main(String[] args) {
             //这里也可以用重载分别传入date和time
                LocalDateTime of = LocalDateTime.of(2020, 6, 8, 10, 22, 10);
                System.out.println(of);
            }
        
        • 可以使用toLocalTime/Date方法取到单独的时间和日期。
        LocalDateTime of = LocalDateTime.of(2020, 6, 8, 10, 22, 10);
                LocalDate localDate = of.toLocalDate();
                LocalTime localTime = of.toLocalTime();
                System.out.println(localDate);
                System.out.println(localTime);
        //输出:2020-06-08
        //	   10:22:10
        
      4. 共有方法

        • parse():传入日期返回LocalDate实例
        //指定格式
        LocalDate parse = LocalDate.parse("20191307", DateTimeFormatter.BASIC_ISO_DATE);
        //不指定格式需在日期中自带格式
        LocalDate parse1 = LocalDate.parse("2007-12-03");
        
    • DateTimeFormatter-格式化日期-时间对象(线程安全)。

      • DateTimeFormatter预定义了像BASIC_ISO_DATE,ISO_DATE_TIME这样的实例,所有的DateTimeFormatter实例都能用于以一定格式来创建特定日期或时间的字符串。
      LocalDateTime date = LocalDateTime.of(2020, 6, 8, 10, 22, 10);
              String format = date.format(DateTimeFormatter.BASIC_ISO_DATE);
              String format1 = date.format(DateTimeFormatter.ISO_DATE_TIME);
              System.out.println(format);
              System.out.println(format1);
      /*输出结果:
         	20200608
      	2020-06-08T10:22:10
      */
      
      • 也可以通过解析日期或时间字符串重新创建该日期对象。
      LocalDateTime dateTime = LocalDateTime.of(2020, 6, 8, 10, 22, 10);
              LocalDate parse = LocalDate.parse("20200608",DateTimeFormatter.BASIC_ISO_DATE);
              System.out.println(parse);
      //输出:2020-06-08
      
      • 可通过ofPattern()方法来自定义格式。
       DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd~MM~yy");
               LocalDate of = LocalDate.of(2020, 6, 8);
               String format = of.format(dateTimeFormatter);
               System.out.println(format);
       //输出:08~06~20
      
    • Period和Duration

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

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

            //获取时间1
            LocalDateTime now = LocalDateTime.now();
            //睡一会
            Thread.sleep(1000);
            //获取时间2
            LocalDateTime now1 = LocalDateTime.now();
            //计算相差时间
            Duration between = Duration.between(now, now1);
            //输出相差秒数
            System.out.println(between.getSeconds());
    
            //获取时间日期1
            LocalDate now = LocalDate.of(2015,03,12);
            //睡一会
            Thread.sleep(1000);
            //获取日期2
            LocalDate now1 = LocalDate.of(2020,06,8);
            //计算相差时间
            Period between = Period.between(now,now1);
            //输出相差几年
            System.out.println(between.getYears());
    
  • 相关阅读:
    计算任意两个日期的间隔天数
    题目标题: 排它平方数
    历届试题 剪格子
    历届试题 翻硬币
    C语言中%d,%o,%f,%e,%x的意义
    历届试题 买不到的数目
    九度 OJ1008 hdu 3790
    南洋理工 OJ 115 城市平乱 dijstra算法
    蓝桥杯 错误票据 原创代码+思路
    历届试题 连号区间数
  • 原文地址:https://www.cnblogs.com/sxblogs/p/13067386.html
Copyright © 2011-2022 走看看