LocalDate LocalTime LocalDateTime Instant的操作与使用

一.简介  

  LocalDate表示当前(或指定)日期,格式为:yyyy-MM-dd

  LocalTime表示当前(或指定)时间,格式为:HH:mm:ss SSS

  LocalDateTime表示当前(或指定)日期时间,格式为:yyyy-MM-ddTHH:mm:ss SSS ,是前2者的结合

  Instant表示当前(或指定)时间瞬时点,或者瞬间点

二.使用介绍  

  jdk1.8之后对表示时间的类型进行了重新编写,表示当前日期时间的有LocalDate、LocalTime、LocalDateTime这三个类,表示瞬间时间点的是Instant

  api提供了时间类型构造方法、getter方法、时间加减操作、时间判断操作、指定未来时间操作、时间支持的类型操作,其使用方法基本上一致。

  LocalDate

  LocalTime   

  LocalDateTime

  Instant

LocalDate

public class LocalDateTimeTest {

    public static void main(String[] args) {//============ LoacalDate 的构造  ============

        LocalDate localDate = LocalDate.now();                  //获取当前时间:2019-12-07
        LocalDate localDate2 = LocalDate.of(2019, 12, 8);      //根据参数设置日期,参数分别为年,月,日

        System.out.println("localDate -----"+localDate);
        System.out.println("localDate2 -----"+localDate2);

        //============ LoacalDate 获取当前时间属性  ============

        System.out.println(localDate.getYear());              //获取当前年份:2019
        System.out.println(localDate.getMonth());             //获取当前月份,英文:DECEMBER
        System.out.println(localDate.getMonthValue());         //获取当前月份,数字:12

        System.out.println(localDate.getDayOfMonth());         //获取当前日期是所在月的第几天7
        System.out.println(localDate.getDayOfWeek());          //获取当前日期是星期几(星期的英文全称):SATURDAY
        System.out.println(localDate.getDayOfYear());          //获取当前日期是所在年的第几天:341

        System.out.println(localDate.lengthOfYear());          //获取当前日期所在年有多少天
        System.out.println(localDate.lengthOfMonth());         //获取当前日期所在月份有多少天
        System.out.println(localDate.isLeapYear());            //获取当前年份是否是闰年

        //============ LoacalDate 当前时间的加减  ============

        System.out.println(localDate.minusYears(1));           //将当前日期减1年
        System.out.println(localDate.minusMonths(1));          //将当前日期减1月
        System.out.println(localDate.minusDays(1));            //将当前日期减1天

        System.out.println(localDate.plusYears(1));            //将当前日期加1年
        System.out.println(localDate.plusMonths(1));           //将当前日期加1月
        System.out.println(localDate.plusDays(1));             //将当前日期加1天

        //============ LoacalDate 当前时间的判断 ============
        System.out.println("LoacalDate的判断");
        System.out.println(localDate.isAfter(localDate2));                    //localDate在localDate2日期之后
        System.out.println(localDate.isBefore(localDate2));                    //localDate在localDate2日期之前
        System.out.println(localDate.isEqual(localDate2));                    //localDate和localDate2日期是否相等

        //============ LoacalDate 当前时间支持的类型  ============
        System.out.println(localDate.isSupported(ChronoField.DAY_OF_YEAR));    //当前时间支持的时间类型是:一年中的某一天,这个不知道应用场景
        System.out.println(localDate.isSupported(ChronoUnit.DAYS));            //当前日期支持的单元:天(说明当前时间是按天来算的)

        System.out.println(localDate.with(TemporalAdjusters.firstDayOfMonth()));            //本月的第1天
        System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextMonth()));        //下月的第1天
        System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextYear()));         //下年的第1天

     //============ LocalDate 指定时间的操作  ===============    
        System.out.println(localDate.withDayOfMonth(2));                                    //本月的第几天
        System.out.println(localDate.with(TemporalAdjusters.lastDayOfMonth()));             //本月的最后一天
        System.out.println(localDate.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)));   //上一周星期天是几号
        System.out.println(localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY)));       //下一周星期一是几号

}

LocalTime

public static void testLocalTime() {

        //============ LocalTime 的构造  ============
        LocalTime localTime = LocalTime.now();                //获取当前时间

//        LocalTime.of(int hour, int minute) 根据参数设置时间,参数分别为时,分
//        LocalTime.of(int hour, int minute, int second) 根据参数设置时间,参数分别为时,分,秒
        LocalTime localTime2 = LocalTime.of(18, 18);
        LocalTime localTime3 = LocalTime.of(18, 18,18);
        System.out.println(localTime2);
        System.out.println(localTime3);

        //============ LoacalDate 获取当前时间属性  ============
        System.out.println(localTime);
        System.out.println(localTime.getHour());
        System.out.println(localTime.getMinute());
        System.out.println(localTime.getSecond());

        System.out.println(localTime.plusHours(1));        //将当前时间加1时
        System.out.println(localTime.plusMinutes(1));    //将当前时间加1分钟
        System.out.println(localTime.plusSeconds(1));    //将当前时间加1秒

        System.out.println(localTime.minusHours(1));    //将当前时间减1小时
        System.out.println(localTime.minusMinutes(1));    //将当前时间减1分钟
        System.out.println(localTime.minusSeconds(1));    //将当前时间减1秒

}

LocalDateTime

public static void testLocalDateTime() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);

        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime2 = LocalDateTime.of(localDate, localTime);
        System.out.println(localDateTime2);
        System.out.println(localDateTime);

}

Instant

public static void testInstant() {
        Instant instant = Instant.now();
        System.out.println(instant);
        System.out.println(instant.getNano());             //纳秒数
        System.out.println(instant.getEpochSecond());    //1970年到现在的秒数
        System.out.println(instant.toEpochMilli());     //1970年到现在的毫秒数(和new Date().getTime() System.currentTimeMillis 一样)
        //============ Instant 时间区间的加减 省略,用法基本一致  ============

}

原文地址:https://www.cnblogs.com/MrRightZhao/p/12005187.html

时间: 2024-08-30 11:00:14

LocalDate LocalTime LocalDateTime Instant的操作与使用的相关文章

Java8新的日期API LocalDate, LocalTime

前言 由于Java Date的各种问题,Java8推出了新的日期API,很受一拨人的追捧. 为什么我们需要新的Java日期/时间API? 在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API.在Java中,现有的与日期和时间相关的类存在诸多问题,其中有: Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义. java.util.Date同时包含日期和时间,而ja

Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总结 0.前言 通过前面Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中主要的类关系简图如下: 可以看出主要的LocalDate, LocalTime, LocalDateTime, Instant都是实现相同的接口,这里以LocalDate为例分析jav

Java中日期的总结

#####1.日期 日期:主要使用的是*java.util.Date* 以及*java.sql.Date* , sql中的Date是util中Date的子类,关系如下,但是如果直接转换的话会出现Cast转换错误. - java.lang.Object - java.util.Date - java.sql.Date 之间的转换可以通过如: ```javajava.util.Date utildate=new java.util.Date(System.getCurrentTime());java

[转] Java8 日期/时间(Date Time)API指南

[From] http://www.importnew.com/14140.html Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容. 为什么我们需要新的Java日期/时间API? 在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API.在Java中,现有的与日期和时间相关的类存在诸多问题,其中有: Jav

java8 时间使用

为什么需要新的时间API 文章来源:https://www.cnblogs.com/guozp/p/10342775.html 在Java 8之前的日期/时间API之前,现有的与日期和时间相关的类存在诸多问题,其中主要有: Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义 java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,将其纳入java.sql包并不合理.另外

java8-新的日期API

背景 java的日期和时间API设计不理想,java8引入新的时间和日期API就是为了解决这个问题. 老的日期API的核心类 缺点 Date 月从0开始,年最小从1900年开始,没有时区的概念 Calendar 月从0开始 DateFormat 线程不安全 其它 同时存在Date和Calendar难以选择: Date和Calendar类都是可变的,维护噩梦 java8引入了类似joda-time的新特性.核心类如下: LocalDate 标识日期.下面是javadoc的翻译: 日期没有时区,处在

Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点

1.不变性 新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处. 比如:LocalDateTime 2.关注点分离 新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date).时间(Time).日期时间(DateTime).时间戳(unix timestamp)以及时区定义了不同的类. 不同时间分解成了各个类,比如:LocalDate, LocalTime, LocalDateTime, Instant,Year,Month,YearMo

基础知识(2)- Java SE 8 Programmer II (1z0-809)

Java Class Design Implement encapsulation Implement inheritance including visibility modifiers and composition Implement polymorphism Override hashCode, equals, and toString methods from Object class Create and use singleton classes and immutable cla

java8 的日期/时间处理

Java 8 的日期/时间类型比之前版本好用,可以替代之前版本.之前版本使用Date类解决所有日期/时间问题,在Java 8 中使用LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration. 具体使用参考文章:Java8 日期/时间(Date Time)API指南 原文地址:https://www.cnblogs.com/windyWu/p/10220588.html