JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime

简介: JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime

为什么要学JDK 8 新增的时间?

JDK 8之前传统的时间API

  1. 设计不合理,使用不方便,很多都被淘汰了。
  2. 都是可变对象,修改后会丢失最开始的时间信息。
  3. 线程不安全。
  4. 只能精确到毫秒。

JDK 8开始之后新增的时间API

  1. 设计更合理,功能丰富,使用更方便。
  2. 都是不可变对象,修改后会返回新的时间对象,不会丢失最开始的时间。
  3. 线程安全
  4. 能精确到毫秒、纳秒。

JDK 8新增的时间API

代替Calendar

  • LocalDate:年、月、日0
  • LocalTime:时、分、秒
  • LocalDateTime:年、月、日   时、分、秒
  • ZoneId :时区
  • ZonedDateTime:带时区的时间

代替Date

  • Instant:时间戳/时间线

代替SimpleDateFormat

  • DateTimeFormatter:用于时间的格式化和解析    它是线程安全的

其他补充

  • Period:时间间隔(年、月、日)
  • Duration:时间间隔(时、分、秒、纳秒)

本篇我们先来学习LocalDate、LocalTime、LocalDateTime


  • LocalDate、LocalTime、LocalDateTime
  • LocalDate:代表本地日期(年、月、日、星期)
  • LocalTime:代表本地时间(时、分、秒、纳秒)
  • LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)

获取对象的方案

图片.png

案例演示

1.获取日期对象中的信息

public class Test {
    public static void main(String[] args) throws ParseException {
        //获取本地日期对象
        LocalDate ld = LocalDate.now();         //年、月、日
        System.out.println(ld);
 
        //1.获取日期对象中的信息
        int year = ld.getYear();                //获取年
        int month = ld.getMonthValue();         //获取月份
        int day = ld.getDayOfMonth();           //获取日
        int dayOfYear = ld.getDayOfYear();      //获取一年中的第几天
        int dayOfWeek = ld.getDayOfWeek().getValue();      //获取星期几
        System.out.println("年份:" + year);
        System.out.println("月份:" + month);
        System.out.println("日:" + day);
        System.out.println("2024年的第几天:" + dayOfYear);
        System.out.println("星期几:" + dayOfWeek);
    }
}

运行结果:


2.直接修改某个信息

public class Test {
    public static void main(String[] args) throws ParseException {
        //获取本地日期对象
        LocalDate ld = LocalDate.now();         //年、月、日
 
        //2.直接修改某个信息   每次修改都会产生一个新的日期对象
        LocalDate ld2 = ld.withYear(2099);      //修改年份为2099年
        LocalDate ld3 = ld.withMonth(12);       //修改月份为12月
        System.out.println("当前:" + ld);
        System.out.println("修改后:");
        System.out.println(ld2);
        System.out.println(ld3);
    }
}

运行结果:


3.把某个信息加或减多少        (加、减也是一样,修改之后会产生新的日期对象)

public class Test {
    public static void main(String[] args) throws ParseException {
        //获取本地日期对象
        LocalDate ld = LocalDate.now();         //年、月、日
 
        //3.把某个信息加或减多少
        LocalDate ld4 = ld.plusYears(2);        //加两年
        LocalDate ld5 = ld.plusMonths(2);       //加俩月
        LocalDate ld6 = ld.minusYears(2);       //减两年
        LocalDate ld7 = ld.minusMonths(2);      //减俩月
        System.out.println(ld4);
        System.out.println(ld5);
        System.out.println(ld6);
        System.out.println(ld7);
    }
}

运行结果:


4.获取指定日期的LocalDate对象&判断两个日期对象是否相等,在前还是在后

public class Test {
    public static void main(String[] args) throws ParseException {
        //获取本地日期对象
        LocalDate ld = LocalDate.now();         //年、月、日
 
        //获取指定日期的LocalDate对象
        LocalDate ld8 = LocalDate.of(2099,12,12);
        LocalDate ld9 = LocalDate.of(2099,12,12);
 
        //判断2个日期对象是否相等,在前还是在后
        System.out.println(ld8.equals(ld9));    //true
        System.out.println(ld8.isAfter(ld));    //true
        System.out.println(ld8.isBefore(ld));   //false
    }
}

运行结果:

其他两个类的API用法其实是几乎和这个一样的,只是由于展示的信息不同,所以可以操作的数据的量不同。

LocalDateTime的不同

LocalDateTime稍微会有点不一样,它是包含了所有的日期信息:

它是可以转换成LocalDate对象或者LocalTime对象的

常用API总结

LocalDate的常用API(都是处理年、月、日、星期相关的

图片.png

图片.png

LocalTime的常用API都是处理时、分、秒、纳秒相关的

方法名 说明
public int getHour() 获取小时
public int getMinute() 获取分
public int getSecond() 获取秒
public int getNano() 获取纳秒

图片.png

LocalDateTime的常用API(可以处理年、月、日、星期、时、分、秒、纳秒等信息 图片.png


END


目录
相关文章
|
3天前
|
存储 缓存 Java
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
9 2
|
20天前
|
Java
JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)
JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)
11 0
|
20天前
|
Java
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
18 1
|
20天前
|
存储 Java API
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
21 2
|
20天前
|
安全 Java API
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
32 2
|
20天前
|
Java API
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
18 1
|
1天前
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
8 1
|
7天前
|
Java
杨校老师课堂之JDK1.8下载、安装与环境变量配置
杨校老师课堂之JDK1.8下载、安装与环境变量配置
18 0
|
7天前
|
Java 关系型数据库 MySQL
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
13 0
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
|
9天前
|
Oracle Java 关系型数据库
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)