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

阅读剩余 66%

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

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

相关文章

  • 详解SpringBoot+SpringSecurity+jwt整合及初体验

    详解SpringBoot+SpringSecurity+jwt整合及初体验 本文将详细讲解如何将SpringBoot、SpringSecurity和jwt整合起来实现用户认证与授权功能,包含完整的代码和详细的步骤,最终实现一个简单的用户登录验证功能。 环境准备 JDK 1.8 Maven 3.x IDE: 推荐使用IntelliJ IDEA Postman:…

    Java 2023年5月20日
    00
  • JQuery弹出层示例可自定义

    现在我来给您详细讲解如何实现一个可自定义的jQuery弹出层示例。 1. 准备工作 在使用jQuery之前,我们需要先引入jQuery库文件。一般情况下,我们可以下载jQuery库到本地,然后在要使用的网页中引入。例如: <script src="jquery.min.js"></script> 2. 自定义弹出层…

    Java 2023年6月15日
    00
  • 你可能从未使用过的11+个JavaScript特性(小结)

    下面是详细讲解“你可能从未使用过的11+个JavaScript特性(小结)”的攻略。 介绍 本文将讲解11+个在JavaScript中常被忽略的特性。包括可选链操作符、空合并运算符、BigInt、Promise.allSettled()、Array.flat()、Array.flatMap()、Object.fromEntries()、String.trim…

    Java 2023年5月26日
    00
  • Java代码块与代码加载顺序原理详解

    Java 代码块与代码加载顺序原理详解 在一个类中,我们可以使用代码块来初始化一些类变量以及执行一些常规的代码逻辑。那么代码块和代码加载顺序之间又有何关系呢?本文将会深入详细地讲解这个问题。 代码块 Java 中的代码块有三种:静态代码块、普通代码块、构造代码块。这三种代码块都可以在Java程序中进行使用,其作用各异,在这里我们只关注静态代码块。 静态代码块…

    Java 2023年5月23日
    00
  • SpringBoot配置文件加载方法详细讲解

    SpringBoot配置文件加载方法详细讲解 在SpringBoot中,我们可以使用配置文件来配置应用程序的属性。本文将详细讲解SpringBoot配置文件加载方法的完整攻略,并提供两个示例。 1. 配置文件的加载顺序 在SpringBoot中,配置文件的加载顺序如下: 在classpath根目录下,查找名为application.properties或ap…

    Java 2023年5月15日
    00
  • Spring零基础入门IOC

    Spring零基础入门IOC攻略 什么是IOC IOC,即控制反转是一种编程思想,它是指在对象创建过程中,不再需要程序员手动去依赖其他对象,而是通过容器来动态注入依赖。Spring是目前IOC容器的代表。 IOC的优势 降低耦合度,更好的解决类之间的依赖关系 提高代码复用性,更灵活的管理对象 零基础入门IOC 1. 安装 Spring 首先需要在你本地的开发…

    Java 2023年5月26日
    00
  • Spring MVC注解式开发示例完整过程

    Spring MVC注解式开发示例完整过程 Spring MVC是一种基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在Spring MVC中,我们可以使用注解来简化开发过程。本文将详细讲解Spring MVC注解式开发的示例过程,并提供两个示例说明。 Spring MVC注解式开发的示例过程 下面是一个Spring MVC注解式开发的示例过…

    Java 2023年5月17日
    00
  • springcloud-gateway集成knife4j的示例详解

    下面是关于“springcloud-gateway集成knife4j的示例详解”的攻略: 1. 准备工作 在Spring Boot项目中添加以下依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo…

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