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());
    
  • 相关阅读:
    Django对静态文件的处理——部署阶段
    使用Django来处理对于静态文件的请求
    Django1.7如何配置静态资源访问
    Spring WebSocket中403错误解决
    FastJSON JSONObject 字段排序 Feature.OrderedField
    国际化(i18n) 各国语言缩写
    【转】java.io.Closeable接口
    【转】spring bean 卸载
    This content should also be served over HTTPS
    Failed to close the ServletOutputStream connection cleanly, Broken pipe
  • 原文地址:https://www.cnblogs.com/sxblogs/p/13067386.html
Copyright © 2011-2022 走看看