Time Class Operation in Java

2025年3月28日 | 阅读 5 分钟

在 Java 中,尤其是在应用程序中,管理时间和日期是一项非常常见的任务。JDK 8 包含一个时间包,其中包含一组用于处理时间和日期的类,其中,LocalTime 类尤其专门用于仅处理时间,而不考虑日期。

LocalTime 类仅表示一天中的时间,不包含日期或时区信息。它是 Java 8 中实现的新日期和时间 API (java.Time) 的组成部分之一,它比旧的 java.util.Datejava.util.Calendar 类更具竞争力且更有效。LocalTime 支持时间操作,包括比较、格式化和计算等。

LocalTime 的特性

不变性: LocalTime 的对象也是不可修改地构造的,这使得该类型具有固定的状态。

精度: 它可以表示具有纳秒精度的时间,这使得时间表示非常准确。

无时区: 例如,它不处理时区,但包含一天中小时的信息。

创建 LocalTime 实例

您可以使用各种方法创建 LocalTime 实例

当前时间

特定时间

带秒和纳秒

从字符串解析

时间类的常用操作

1. 获取组件

可以通过 getHour()、getMinute()、getSecond() 和 getNano() 等方法从 LocalTime 实例中提取特定组件。例如,调用 getHour() 会得到小时部分。

2. 修改时间

由于 LocalTime 是一个不可变对象,修改时间的那些操作会返回一个新的 LocalTime 实例。LocalTime 可以添加或减去小时和分钟,例如使用 plusHours() 和 minusMinutes() 等方法,从而生成新的 LocalTime 对象。

添加时间

减去时间

3. 比较时间

要比较 LocalTime 实例,必须使用比较方法来确定实例的顺序。

isBefore() 方法

isAfter() 方法

isEqual() 方法

4. 格式化时间

使用 DateTimeFormatter 可以将 LocalTime 实例准备成字符串。默认格式使用 toString(),而自定义格式可以使用“hh:01:26:mm:ss a”之类的模式定义,以符合特定的显示格式标准。

默认格式

自定义格式

5. 解析字符串

使用 DateTimeFormatter 将字符串转换为 LocalTime。使用带格式器的 LocalTime.parse() 来尝试理解如何解释各种自定义时间格式,以便将这些格式的表示转换为 LocalTime 对象以进行进一步分析。

标准解析

自定义解析

示例

向当前时间添加时间

文件名:AddTimeExample.java

输出

 
Current Time: 11:06:20.675378
Time After 3 Hours 45 Minutes: 14:51:20.675378   

特性

不变性: 因此,LocalTime 的实例是“复制”的,意味着一旦创建就无法更改其状态。用于操作时间的那些操作,例如添加小时或分钟等,会创建并返回一个新的 LocalTime 实例。

精度: LocalTime 具有纳秒精度,这意味着表示的时间具有高精度。该类提供了单独提取小时、分钟、秒和纳秒部分的方法。

无时区: 也就是说,LocalTime 实体不包含时差信息。它仅致力于在系统的默认时区上下文或任何其他类指定的时区上下文中处理一天中的小时部分。

用例

调度: 有时用于在给定时间段内为不同事件或事件设置时间,例如 cron 作业或闹钟。

时间计算: 它有助于计算时间间隔或持续时间,例如加法或减法,以得出应完成某个事项的时间或需要完成某个事项的时间段。

时间显示: 为用户界面格式化 LocalTime 可以使时间以可读且本地化的格式显示。

时间比较: 当需要比较时间时,这会很有帮助,例如,按时间对事件进行排序,或比较某个特定事件的时间是否在所需范围内。

结论

Java 的 LocalTime 类在处理与日期和时区相关的时间方面非常有效。在 Java 8 中,它提供了一种现代化的、不可变的、以纳秒为单位的时间处理方式。

创建特定实例的方法、更改现有时间的方法以及比较特定值的方法,使得 LocalTime 可用于各种与时间相关的操作。结合 DateTimeFormatter,它可以轻松地解析和格式化时间字符串。

通过使用 LocalTime,开发人员可以获得以下好处:有了这个与时间相关的类型,开发人员就能更好地处理时间操作,从而提高他们应用程序中基于时间的运算的质量和可靠性。