美文网首页java
28.JDK8开始新增日期API:Instant、DateTim

28.JDK8开始新增日期API:Instant、DateTim

作者: 每天起床都想摆 | 来源:发表于2022-02-07 21:38 被阅读0次

    Instant

    Instant时间戳

    • JDK8可以方便的获取时间戳,且功能丰富,Instant类由一个静态的工厂方法now()可以返回当前时间戳

      Instant instant = Instant.now();
      System.out.println("当前时间戳:" + instant);
      
      Date date = Date.from(instant);
      System.out.println("当前时间戳:" + date);
      
      instant = date.toInstant();
      System.out.println(instant);
      
    • 时间戳是包含日期和时间的(即某一时刻年月日时分秒),与java.util.Date很类似,事实上Instant就类似于JDK8以前的Date

    • Instant和Date是两个类可以进行转换

    测试代码

    • atZone():instant.atZone(ZoneId.systemDefault()) 使用默认时区
    • Date.from():将Instant对象转换成Date对象
    • toInstant():将Date对象转换成Instant对象
    package com.java.jdk8time_update;
    
    import java.time.Instant;
    import java.time.ZoneId;
    import java.time.ZonedDateTime;
    import java.util.Date;
    
    /**
     * Instant类由一个静态的工厂方法now()可以返回当前时间戳
     */
    public class InstantTest {
        public static void main(String[] args) {
            // 得到一个时间戳对象
            Instant instant = Instant.now();
            // 所得时间戳不是本时区的
            System.out.println("当前时间戳:" + instant); // 打印的是内容说明重写了toString()方法
    
            // 使用atZone选定时区
            ZonedDateTime instantResult = instant.atZone(ZoneId.systemDefault()); //返回新的时间戳
            System.out.println(instant.atZone(ZoneId.systemDefault()));
    
            // 时间戳也可以使用isBefore或者isAfter等相关API(甚至加减)
            System.out.println(instant.isAfter(Instant.from(instantResult)));
    
            // Instant返回Date对象,使用Date.from()完成对象转换
            Date date = Date.from(instant);
            System.out.println("当前时间戳:" + date);
    
            // Date对象转换成时间戳对象,使用toInstant()完成对象转换
            instant = date.toInstant();
            System.out.println(instant);
        }
    }
    
    

    DateTimeFormatter

    概述

    日期时间格式化

    • 在JDK8中,引入了一个全新的日期与时间格式器(DateTimeFormatter)
    • 正反都能调用format方法

    测试代码

    package com.java.jdk8time_update;
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateTimeFormatterTest {
        public static void main(String[] args) {
            // 本地时刻  日期时间 对象
            LocalDateTime ldt = LocalDateTime.now();
            System.out.println(ldt);
    
            // 解析/格式化器
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
            // 正向格式化(格式化器格式化对象)
            String ldtStr1 = dtf.format(ldt);
            System.out.println(ldtStr1);
    
            // 逆向格式化(对象格式化格式化器,最终也会把对象自己格式化)
            String ldtStr = ldt.format(dtf);
            System.out.println(ldtStr);
    
            // 解析字符串时间
            DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm:ss");
            String dateStr = "2011-11-11 11:11:11";
    
            // 解析当前字符串时间成为本地日期时间对象
            // 调用parse()方法:参数一:待解析字符串型日期   参数二:对象格式化器
            LocalDateTime ldt1 = LocalDateTime.parse(dateStr,dtf1);
            System.out.println(ldt1);
    
            // 解析完成后字符串日期对象变成了本地日期时间对象,因此可以调用一些操作
            System.out.println(ldt1.getDayOfYear());
        }
    }
    

    相关文章

      网友评论

        本文标题:28.JDK8开始新增日期API:Instant、DateTim

        本文链接:https://www.haomeiwen.com/subject/vmvukrtx.html