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日

相关文章

  • java实现打印日历

    讲解“Java实现打印日历”的完整攻略,步骤如下: 1. 确定打印日历的时间范围 首先需要确定要打印的日历的时间范围,可以让用户输入年份和月份,也可以默认打印当前月份的日历,这里我们以用户输入年份和月份为例。 2. 实现核心算法 接下来需要实现核心算法,根据用户输入的年份和月份,计算出该月份的第一天是星期几,以及该月份有多少天。这里使用Java的Calend…

    Java 2023年6月1日
    00
  • Java 实现定时任务的三种方法

    以下是对“Java 实现定时任务的三种方法”的详细讲解: Java 实现定时任务的三种方法 在实际开发中,经常会遇到需要在固定时间或间隔时间内执行任务的情况,这时候需要使用定时任务来完成。Java 提供了很多种方式来实现定时任务,本文将介绍三种比较常用的方法。 一、使用 Timer/TimerTask 类实现定时任务 1.1 Timer/TimerTask …

    Java 2023年5月18日
    00
  • extjs 的权限问题 要求控制的对象是 菜单,按钮,URL

    为了实现对菜单、按钮、URL等控件的权限控制,我们需要新建一个Permission控制模块。在该模块中,需要进行用户权限的管理,同时定义相应的权限验证方法。下面是具体的步骤和示例: 定义权限管理器 首先,我们需要定义一个Permission控制器(controller),用来管理用户权限。我们在该控制器中定义了一个init()方法,该方法用来检查是否有权限访…

    Java 2023年6月15日
    00
  • 浅谈request.getinputstream只能读取一次的问题

    当使用request.getInputStream()方法获取请求数据流时,数据流只能被读取一次,如果多次读取,将无法获取数据。这是一个常见的问题,对于此问题的解决,我们可以使用如下两种方法: 方法一:使用Filter过滤器 通过过滤器来代替直接获取输入流,将获取到的输入流存放在自定义的HttpServletRequestWrapper中并使用缓存将数据流缓…

    Java 2023年6月15日
    00
  • Java Swing程序设计实战

    Java Swing程序设计实战攻略 Java Swing程序设计实战是Java界面开发的重要书籍,其中讲解了Swing界面组件的使用、事件处理、布局管理器等内容,并有大量的编程实例。攻略分为以下几个部分: 程序设计实践 掌握Swing组件的使用,如JLabel、JTextField、JComboBox等; 学会处理Swing组件的事件,如ActionEve…

    Java 2023年5月19日
    00
  • Java中super关键字介绍以及super()的使用

    当子类需要引用父类的构造方法、成员变量或成员方法时,需要使用Java中的super关键字。super也可以理解为是当前对象的父类对象。 super的使用有以下几种形式: 使用super引用父类的成员变量和成员方法 在子类中可以使用super关键字来引用父类的成员变量和成员方法。例如: public class Parent { private int age…

    Java 2023年5月26日
    00
  • mybatis的使用-Mapper文件各种语法介绍

    下面是关于mybatis的使用-Mapper文件各种语法介绍的完整攻略: 1. Mapper文件介绍 Mapper文件是mybatis中核心的配置文件之一,它用于将SQL语句映射到Java代码中的方法上。Mapper文件位于src/main/resources目录下,除了在其中定义SQL语句之外,还可以在其中定义各种参数、返回值类型、条件语句、循环语句等等。…

    Java 2023年5月20日
    00
  • Java的Struts框架报错“InvalidPathException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“InvalidPathException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置路径,则可能会出现此。在这种情况下,需要检查配置文件以解决此问题。 路径错误:如果路径不正确,则可能会出现此。在这种情况下,需要检查路径以解决此问题。 以下是两个实例: 例 1 如果配置文件中没有…

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