zoukankan      html  css  js  c++  java
  • Java 8中的时间处理

    Java 8中的时间处理

    在Java8中, 新的时间及⽇期API位于java.time包中, 该包中有哪些重要的类。 分别代表了什么?

    Instant: 时间戳

    Duration: 持续时间, 时间差

    LocalDate: 只包含⽇期, ⽐如: 2016-10-20

    LocalTime: 只包含时间, ⽐如: 22:15:16

    LocalDateTime: 包含⽇期和时间, ⽐如: 2016-10-20 22:15:16

    Period: 时间段

    ZoneOffset: 时区偏移量, ⽐如: +8:00

    ZonedDateTime: 带时区的时间

    Clock: 时钟, ⽐如获取⽬前美国纽约的时间

    LocalTime 和 LocalDate的区别?

    LocalDate表⽰⽇期, 年⽉⽇, LocalTime表⽰时间, 时分 秒

    获取当前时间

    在Java8中,使用如下方式获取当前时间:

    LocalDate today = LocalDate.now();
    int year = today.getYear();
    int month = today.getMonthValue();
    int day = today.getDayOfMonth();
    System.out.printf("Year : %d Month : %d day : %d t %n", year,month, day);

    创建指定日期的时间

    LocalDate date = LocalDate.of(2018, 01, 01);

    检查闰年

    直接使⽤LocalDate的isLeapYear即可判断是否闰年

    LocalDate nowDate = LocalDate.now();
    //判断闰年
    boolean leapYear = nowDate.isLeapYear();

    计算两个⽇期之间的天数和⽉数

    在Java 8中可以⽤java.time.Period类来做计算。

    Period period = Period.between(LocalDate.of(2018, 1, 5),LocalDate.of(2018, 2, 5));

    利用DateTimeFormatter 进行LocalDateTime与String互转

    {//LocalDateTime转String(LocalDate,LocalTime类似)
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.now();
        String localDateTimeStr = dtf.format(localDateTime);
        System.out.println("LocalDateTime转成String类型的时间:" + localDateTimeStr);//2020-06-01 13:23:32
        System.out.println("LocalDateTime转成String类型的时间:" + localDateTime.toString());//2020-06-01T13:23:32.430
    }
    {//String转LocalDateTime(LocalDate,LocalTime类似)
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse("2018-06-01 10:12:05", dtf);
        System.out.println("String类型的时间转成LocalDateTime:" + localDateTime);//2018-06-01T10:12:05
    }

    利用Instant 进行LocalDateTime与Date互转

    {//LocalDateTime转Date
        LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        Date nowDate = Date.from(instant);
        System.out.println(nowDate);//Mon Jun 01 13:55:40 CST 2020
    }
    {//Date转LocalDateTime
        Date nowDate = new Date();
        Instant instant = nowDate.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        System.out.println(localDateTime);//2020-06-01T13:59:21.315
    }
    {//LocalDate转Date
        LocalDate localDate = LocalDate.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        Date nowDate = Date.from(instant);
        System.out.println(nowDate);//Mon Jun 01 00:00:00 CST 2020
    }
    {//Date转LocalDate
        Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalDate localDate = localDateTime.toLocalDate();
        System.out.println(localDate);//2020-06-01
    }
    {//LocalTime转Date
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        Date nowDate = Date.from(instant);
        System.out.println(nowDate);//Mon Jun 01 14:24:29 CST 2020
    }
    {//Date转LocalTime
        Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalTime localTime = localDateTime.toLocalTime();
        System.out.println(localTime);//14:24:29.686
    }

    LocalDateTime,LocalDate,LocalTime互转

    {//LocalDateTime转LocalDate
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDate localDate = localDateTime.toLocalDate();
        System.out.println(localDate);//2020-06-01
    }
    {//LocalDate转LocalDateTime
        LocalDate localDate = LocalDate.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        Date date = Date.from(instant);
        System.out.println(date);//Mon Jun 01 00:00:00 CST 2020
    }
    {//LocalDateTime转LocalTime
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalTime localTime = localDateTime.toLocalTime();
        System.out.println(localTime);//14:29:44.243
    }
    {//LocalTime转LocalDateTime
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        System.out.println(localDateTime);//2020-06-01T14:31:35.366
    }




  • 相关阅读:
    c#类,接口,结构,抽象类介绍 以及抽象和接口的比较
    存储过程基本语法
    有关uploadifive的使用经验
    堆栈的浅析
    JavaScript语言精粹4递归(汉诺塔游戏寻常解)及作用域
    JavaScript语言精粹3异常,扩充类型功能
    有关this,4种调用模式小例子
    JavaScript语言精粹2函数对象,函数字面量,调用
    JavaScript语言精粹1字符串,对象字面量
    JQUERY选择器第一天
  • 原文地址:https://www.cnblogs.com/ooo0/p/12874139.html
Copyright © 2011-2022 走看看