JDK8时间相关类超详细总结(含多个实例)

JDK8时间相关类超详细总结(含多个实例)

为什么需要时间相关的类?

在程序设计中,我们经常需要使用到时间相关的操作,例如获取当前时间、将时间转换成特定格式、计算时间差等。而Java的JDK 8中提供了许多时间类的操作,可以方便地进行时间处理。

JDK8时间相关类

Instant

Instant类表示时间点,它是相对于时间线上的一个点,可以精确到纳秒级别。常用的方法如下:

  • now():获取当前时间点
  • plus()/minus():加/减时间
  • isBefore()/isAfter()/isEqual():判断时间前后关系
  • toEpochMilli():将时间转换成毫秒数
  • from():根据传入参数获得时间点
Instant instant1 = Instant.now();
System.out.println("当前时间点:" + instant1);

Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());
System.out.println("当前时间对应的时间点:" + instant2);

LocalDate

LocalDate类表示日期,它只包含年月日信息,没有时分秒。常用的方法如下:

  • now():获取当前日期
  • plusDays()/plusWeeks()/plusMonths()/plusYears():增加或减少指定天/周/月/年的日期
  • minusDays()/minusWeeks()/minusMonths()/minusYears():同上,只是减少
  • isBefore()/isAfter()/isEqual():判断日期前后关系
  • getYear()/getMonthValue()/getDayOfMonth():获取年/月/日信息
  • withYear()/withMonth():改变年/月信息
LocalDate localDate1 = LocalDate.now();
System.out.println("当前日期:" + localDate1);

LocalDate localDate2 = LocalDate.of(2021, 12, 25);
System.out.println("指定日期:" + localDate2);

System.out.println("指定日期增加30天:" + localDate2.plusDays(30));

LocalTime

LocalTime类表示时间,它只包含时分秒信息。常用的方法如下:

  • now():获取当前时间
  • plusHours()/plusMinutes()/plusSeconds():增加或减少指定小时/分钟/秒钟的时间
  • minusHours()/minusMinutes()/minusSeconds():同上,只是减少
  • isBefore()/isAfter()/isEqual():判断时间前后关系
  • getHour()/getMinute()/getSecond():获取小时/分钟/秒钟信息
LocalTime localTime1 = LocalTime.now();
System.out.println("当前时间:" + localTime1);

LocalTime localTime2 = LocalTime.of(19, 30, 15);
System.out.println("指定时间:" + localTime2);

System.out.println("指定时间增加7小时:" + localTime2.plusHours(7));

LocalDateTime

LocalDateTime类表示日期和时间,它是LocalDate和LocalTime的组合体,同时包含年月日时分秒信息。常用的方法如下:

  • now():获取当前日期时间
  • plusDays()/plusWeeks()/plusMonths()/plusYears()/plusHours()/plusMinutes()/plusSeconds():增加或减少指定天/周/月/年/小时/分钟/秒钟的日期时间
  • minusDays()/minusWeeks()/minusMonths()/minusYears()/minusHours()/minusMinutes()/minusSeconds():同上,只是减少
  • isBefore()/isAfter()/isEqual():判断日期时间前后关系
  • getYear()/getMonthValue()/getDayOfMonth()/getHour()/getMinute()/getSecond():获取年/月/日/小时/分钟/秒钟信息
  • withYear()/withMonth():改变年/月信息
LocalDateTime localDateTime1 = LocalDateTime.now();
System.out.println("当前日期时间:" + localDateTime1);

LocalDateTime localDateTime2 = LocalDateTime.of(2021, 12, 25, 19, 30, 15);
System.out.println("指定日期时间:" + localDateTime2);

System.out.println("指定日期时间增加30天:" + localDateTime2.plusDays(30));

ZonedDateTime

ZonedDateTime类表示具有时区信息的日期和时间,继承自LocalDateTime,同时包含ZoneId和ZoneOffset两个成员变量,分别表示时区和时区偏移量。常用的方法如下:

  • now():获取当前日期时间
  • withZoneSameInstant():改变时区,同时调整日期时间使其与原日期时间相同
  • withZoneSameLocal():改变时区,不调整日期时间
  • toEpochSecond():将日期时间转换成Unix时间戳
  • from():根据传入参数获得ZonedDateTime
ZonedDateTime zonedDateTime1 = ZonedDateTime.now();
System.out.println("当前日期时间:" + zonedDateTime1);

ZonedDateTime zonedDateTime2 = ZonedDateTime.of(LocalDateTime.of(2021, 12, 25, 19, 30, 15), ZoneId.of("Asia/Shanghai"));
System.out.println("指定日期时间:" + zonedDateTime2);

ZonedDateTime zonedDateTime3 = zonedDateTime2.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println("指定日期时间在美国纽约时区:" + zonedDateTime3);

实例演示

例1:计算两个时间点之间的时间差

Instant instant1 = Instant.now();
Thread.sleep(2000);
Instant instant2 = Instant.now();
Duration duration = Duration.between(instant1, instant2);
System.out.println("时间差(秒):" + duration.getSeconds());

例2:将日期时间转换成指定格式的字符串

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
String str = localDateTime.format(dateTimeFormatter);
System.out.println("指定格式的字符串:" + str);

总结

JDK 8提供的时间相关类可以让我们更加方便地进行时间处理,例如计算时间差、获取当前时间、改变日期时间等。掌握这些类的使用可以大大提高我们的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDK8时间相关类超详细总结(含多个实例) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring bean 四种注入方式详解

    Spring bean 四种注入方式详解 在 Spring 框架中,我们可以通过不同的方式来注入 bean,包括构造函数注入、setter 方法注入、接口注入和注解注入。这篇文章将详细介绍这四种注入方式以及它们的优缺点。 构造函数注入 构造函数注入是指使用构造函数来注入依赖关系。在使用这种方式时,我们需要在 bean 的 XML 配置文件中使用 constr…

    Java 2023年5月31日
    00
  • 关于Java中如何实现文件的读写操作

    做Java开发时经常需要对文件进行读写操作,下面是Java中实现文件读写操作的完整攻略: 文件读操作 在Java中,我们可以使用FileInputStream或BufferedInputStream类来读取文件。对于二进制文件可以直接用FileInputStream,对于文本文件最好使用BufferedInputStream。 FileInputStream…

    Java 2023年5月20日
    00
  • java编程实现求质数与因式分解代码分享

    下面是 “Java编程实现求质数与因式分解代码分享” 的完整攻略。 目录 介绍 求质数的代码实现 因式分解的代码实现 示例说明 总结 介绍 本文将介绍Java编程实现求质数与因式分解的代码。当我们需要判断一个数是不是质数时,我们可以使用质数的定义:只有1和该数本身能够整除它,它才是质数。因式分解是指将一个数分解成几个互质的整数乘积的形式。这里我们使用两种算法…

    Java 2023年5月19日
    00
  • Java中的Object类详细介绍

    Java中的Object类详细介绍 简介 在Java中,所有类都是Object类的直接或者间接子类。Object类是Java中的根类,它位于java.lang包中,几乎每个Java程序都会使用到Object类中的方法。Object类提供了通用的方法,这些方法可以被所有继承了Object类的类使用。 下面我们来详细了解一下Java中Object类的一些方法以及…

    Java 2023年5月26日
    00
  • Java Calendar类的使用总结实例

    下面是详细讲解Java Calendar类的使用总结实例的攻略。 1. Calendar类概述 Java中的Calendar类是一个抽象类,用来代表系统的日历信息,提供了比Date类更为广泛和详细的日历操作。 通过Calendar类,可以操作和获取年、月、日、时、分、秒、毫秒等时间信息,还可以进行日期的加、减、比较等操作。具体有以下几个常用属性: YEAR:…

    Java 2023年5月20日
    00
  • JavaWeb后台购物车类实现代码详解

    下面为大家详细讲解“JavaWeb后台购物车类实现代码详解”的完整攻略。 一、前置知识 在学习本文之前,您需要了解以下知识点: JavaWeb基础知识,例如Servlet、JSP等; Java基础知识,例如面向对象编程、集合等; HTML、CSS、JavaScript等前端知识。 二、购物车的实现 购物车的实现可以借助实现了Session接口的HttpSes…

    Java 2023年5月23日
    00
  • 零基础搭建boot+MybatisPlus的详细教程

    下面为你讲解“零基础搭建boot+MybatisPlus的详细教程”的完整攻略,包括环境搭建、项目创建以及示例代码等内容。 环境搭建 在开始搭建项目之前,需要先搭建好所需的环境,具体步骤如下: 1. 安装JDK 首先需要安装JDK,它是Java开发的基础环境,我们可以从官网下载安装包,根据提示安装即可。安装完成后,打开命令行窗口,输入以下命令检查是否安装成功…

    Java 2023年5月20日
    00
  • Java实现简单修改文件名的方法分析

    下面是“Java实现简单修改文件名的方法分析”的完整攻略。 1. 概述 在Java中,我们可以使用File类的renameTo()方法来修改文件的名称。renameTo()方法能够将一个文件重命名为一个指定的目录路径或文件路径名。本篇攻略将详细介绍使用Java修改文件名的方法。 2. renameTo()方法的使用 2.1 单个文件重命名 下面是一个单个文件…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部