Java 日期时间工具包–java.time的使用

Java 日期时间工具包–java.time的使用

Java 8及以上版本引入了新的日期时间API,即java.time包,该包提供了许多有用的类和方法,使得Java开发人员能够更加轻松地处理日期和时间。

1. 使用LocalDate类

LocalDate类表示本地日期,即年月日,使用方法如下:

LocalDate currentDate = LocalDate.now();

上述代码将会创建一个LocalDate对象,表示当前日期。我们还可以使用parse()方法根据指定的字符串创建LocalDate对象。

LocalDate firstDate = LocalDate.parse("2021-01-01");

LocalDate类也提供了许多方法来操作日期,例如plusDays()方法可以增加天数,minusMonths()方法可以减少月数,因为LocalDate类是不可变的,所有这些方法的返回值都是一个新的LocalDate对象,不会改变原来的对象。

LocalDate newDate = firstDate.plusDays(5).minusMonths(1);

上述代码将会生成一个新的LocalDate对象,表示比firstDate提前一个月五天的日期值。

2. 使用LocalTime类

LocalTime类表示本地时间,即时分秒,使用方法如下:

LocalTime currentTime = LocalTime.now();

上述代码将会创建一个LocalTime对象,表示当前时间。我们还可以使用parse()方法根据指定的字符串创建LocalTime对象。

LocalTime time = LocalTime.parse("12:34:56");

LocalTime类也提供了许多方法来操作时间,例如plusMinutes()方法可以增加分钟数,minusHours()方法可以减少小时数,因为LocalTime类是不可变的,所有这些方法的返回值都是一个新的LocalTime对象,不会改变原来的对象。

LocalTime newTime = time.plusMinutes(30).minusHours(2);

上述代码将会生成一个新的LocalTime对象,表示比time提前两个小时三十分钟的时间值。

3. 使用LocalDateTime类

LocalDateTime类表示本地日期时间,即年月日时分秒,使用方法如下:

LocalDateTime currentDateTime = LocalDateTime.now();

上述代码将会创建一个LocalDateTime对象,表示当前日期时间。我们还可以使用parse()方法根据指定的字符串创建LocalDateTime对象。

LocalDateTime dateTime = LocalDateTime.parse("2021-01-01T12:34:56");

LocalDateTime类也提供了许多方法来操作日期时间,例如plusDays()方法可以增加天数,minusMonths()方法可以减少月数,plusMinutes()方法可以增加分钟数,minusHours()方法可以减少小时数,因为LocalDateTime类是不可变的,所有这些方法的返回值都是一个新的LocalDateTime对象,不会改变原来的对象。

LocalDateTime newDateTime = dateTime.plusDays(5).minusMonths(1).plusMinutes(30).minusHours(2);

上述代码将会生成一个新的LocalDateTime对象,表示比dateTime提前一个月五天两小时三十分钟的日期时间值。

4. 使用Instant类

Instant类表示时间戳,即1970年1月1日0点0分0秒(UTC时区)开始到当前时间的毫秒数,使用方法如下:

Instant instant = Instant.now();

上述代码将会创建一个Instant对象,表示当前时间的时间戳。我们还可以使用ofEpochMilli()方法根据指定的毫秒数创建Instant对象。

Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());

5. 使用Duration类和Period类

Duration类和Period类表示时间段,区别在于Duration类表示时间段的毫秒数,而Period类表示时间段的年、月、日等时间单位。我们可以使用这两个类来计算两个时间点之间的时间间隔。

LocalDateTime beforeDateTime = LocalDateTime.parse("2021-01-01T00:00:00");
LocalDateTime afterDateTime = LocalDateTime.parse("2021-01-01T12:34:56");

Duration duration = Duration.between(beforeDateTime, afterDateTime);
long seconds = duration.getSeconds();

Period period = Period.between(beforeDateTime.toLocalDate(), afterDateTime.toLocalDate());
int days = period.getDays();

上述代码将会计算出beforeDateTimeafterDateTime之间的时间间隔,其中duration.getSeconds()表示时间间隔的秒数,period.getDays()表示时间间隔的天数。

示例1

LocalDate firstDate = LocalDate.parse("2021-01-01");
LocalDate secondDate = LocalDate.parse("2021-01-31");

Period period = Period.between(firstDate, secondDate);

System.out.println("January has " + period.getDays() + " days.");

上述代码将会输出:"January has 30 days."

示例2

LocalDateTime startDateTime = LocalDateTime.of(2021, 1, 1, 0, 0, 0);
LocalDateTime endDateTime = LocalDateTime.of(2021, 12, 31, 23, 59, 59);

Duration duration = Duration.between(startDateTime, endDateTime);

System.out.println("The year 2021 has " + duration.toHours() + " hours.");

上述代码将会输出:"The year 2021 has 8760 hours."

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 日期时间工具包–java.time的使用 - Python技术站

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

相关文章

  • Java实现发送手机短信语音验证功能代码实例

    下面是Java实现发送手机短信语音验证功能代码实例的完整攻略。 1. 准备工作 首先需要在云通讯官网https://www.yuntongxun.com/注册账号,然后创建应用,并获取相应的Account SID 和 Auth Token。同时还需要在应用中开通语音验证码功能,并记录下相应的模板ID。 2. 引入SDK 使用云通讯提供的Java SDK来发送…

    Java 2023年5月20日
    00
  • environments was not found on the java.library.path 问题的解决方法

    问题背景: 当在Java程序中调用JNI(Java Native Interface)代码或使用一些依赖本地库的第三方库时,可能会出现“environments was not found on the java.library.path”错误。这是因为JVM无法找到必要的库或库文件路径,导致没有正确初始化本地环境。 解决方法: 一般情况下,要解决这个问题,…

    Java 2023年5月19日
    00
  • jsp中Action使用session方法实例分析

    对于这个问题,我将介绍JSP中使用Action对象进行会话控制的方法,并附上两个实例。 什么是Action对象? Action是org.apache.struts.action.Action类的一个实例,是 Struts 框架中的一个关键组成部分。Action对象是用于处理HTTP请求的 Java 类,在 Struts 架构中起到中心作用。Action通过从…

    Java 2023年5月20日
    00
  • jsp编程中session的用法实例分析

    下面是“jsp编程中session的用法实例分析”的详细攻略。 第一部分:背景和概念 在JSP编程中,使用Session对象可以跟踪用户在Web应用程序中的操作状态。Session对象是一个服务器端的对象,用于存储客户端相关的状态信息。每个Session对象都有一个唯一的ID号,在客户端使用Cookie保存这个唯一的ID号,以便跟踪客户端的操作状态。 Ses…

    Java 2023年6月15日
    00
  • java异常继承何类,运行时异常与一般异常的区别(详解)

    Java异常继承何类 Java中所有异常都继承自java.lang.Throwable类,Throwable类分为两种:Error和Exception。Error表示虚拟机无法处理的错误,而Exception则表示正常的异常事件。 Exception又分为编译时异常和运行时异常,下面将详细说明运行时异常和一般异常的区别。 运行时异常与一般异常的区别 运行时异…

    Java 2023年5月27日
    00
  • VScode 打造完美java开发环境最新教程

    VS Code 打造完美 Java 开发环境最新教程 Visual Studio Code 是一款免费、轻量级且功能强大的 IDE,非常适合 Java 开发人员使用。本文将介绍如何使用 VS Code 打造完美的 Java 开发环境。 安装 Java 开发环境 在 VS Code 中开发 Java 需要先安装 Java 开发环境。可以从 Oracle 官网下…

    Java 2023年5月19日
    00
  • 基于springboot2集成jpa,创建dao的案例

    基于Spring Boot 2集成JPA(Java Persistence API),创建DAO (Data Access Object) 的攻略还是比较简单的。下面我将为你提供一个详细的过程。 1. 创建Spring Boot项目和配置文件 首先,我们需要创建一个Spring Boot的项目,如果你已经创建了一个项目,那就不需要再做这一步了。我们使用Mav…

    Java 2023年5月19日
    00
  • 详解Mybatis的分页插件

    MyBatis是一款非常流行的ORM框架,它在开发过程中会遇到分页查询的需求。MyBatis原生不支持分页功能,因此需要使用MyBatis的分页插件。下面是详解MyBatis的分页插件的攻略。 1. 安装分页插件 在MyBatis项目中,添加分页插件是很简单的,只需两步即可: 在pom.xml中添加分页插件的依赖: <dependency> &l…

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