Java 中的 Duration minusMinutes(long) 方法及示例

2025 年 1 月 6 日 | 阅读 6 分钟

Java中Duration类里的minusMinutes(long minutes)方法用于从一个Duration实例中减去指定分钟数。Duration类是java.time包中的一个类,它是一个在Java 8中引入的基于时间的功能,表示一段时间,例如,34.5秒。

方法签名

Duration: 方法的返回类型是Duration,这告诉我们该方法返回一个Duration类的对象。返回的Duration等于原始时长减去给定分钟数后的结果。

minusMinutes: 这是方法的名称。方法名本身就说明了该方法是为了从时长中减去几分钟而设计的。

long minutes: 该方法接受一个long类型的参数,名为minutes。该参数指定了要从调用该方法的Duration实例中减去的分钟数。

示例1:基本用法

在此示例中,我们使用ofHours方法创建一个表示2小时时长的Duration对象。该时长存储在duration变量中。我们在duration对象上调用minusMinutes(30)方法。这将从原始时长中减去30分钟,并返回一个新的Duration对象,我们将其存储在resultDuration变量中。我们打印原始时长以及减去30分钟后的时长。

文件名: DurationExample.java

输出

Original Duration: PT2H
Duration after subtracting 30 minutes: PT1H30M

示例2:处理负结果

在此示例中,我们使用ofMinutes方法创建一个表示45分钟时长的Duration对象。我们尝试使用minusMinutes方法从原始时长中减去60分钟。由于减去的分钟数超过了原始时长,因此结果时长为负(PT-15M)。这表示一个过去15分钟的时长。我们打印原始时长(PT45M)和减去后的结果时长(PT-15M)作为输出。

文件名: DurationExample1.java

输出

Example 1 - Original Duration: PT45M
Example 1 - Duration after subtracting 60 minutes: PT-15M
Example 2 - Original Duration: PT1H
Example 2 - Duration after subtracting 2 hours: PT-1H

示例3:与其他方法链式调用

在此示例中,我们使用ofHours和plusMinutes方法创建了一个表示1小时20分钟时长的Duration对象。我们将minusMinutes(50)方法链式调用,以从原始时长中减去50分钟。然后,我们链式调用minusSeconds(10)方法,从先前获得的时长中进一步减去10秒。最终结果时长表示30分钟10秒。我们打印原始时长和结果时长的输出。

文件名: DurationExample2.java

输出

Example 1 - Original Duration: PT1H20M
Example 1 - Duration after subtracting 50 minutes and 10 seconds: PT29M50S
Example 2 - Original Duration: PT1H
Example 2 - Duration after subtracting 2 hours and 30 minutes: PT-1H-30M
Example 3 - Original Duration: PT5H
Example 3 - Duration after subtracting 30000 minutes and 1000 seconds: PT-495H-16M-40S

示例4:减去大量分钟数

在此示例中,我们创建了一个表示5小时时长的Duration对象。ofHours(5)方法初始化此时长并将其存储在duration变量中。我们使用minusMinutes(30000)从原始时长中减去30,000分钟。由于30,000分钟等于500小时(30,000 / 60),此减法导致大幅减少,使时长变为负数。然后,我们使用minusSeconds(1000)从已经为负的时长中减去1000秒。

文件名: LargeNumberOfMinutesExample.java

输出

Example 1 - Original Duration: PT5H
Example 1 - Duration after subtracting 30,000 minutes and 1000 seconds: PT-495H-16M-40S
Example 2 - Original Duration: PT48H
Example 2 - Duration after subtracting 4320 minutes: PT-24H
Example 3 - Original Duration: PT1H
Example 3 - Duration after subtracting 5000 minutes and 2000 seconds: PT-82H-53M-20S

应用

1. 调度系统

会议调度器:通过减去准备时间或缓冲时间来调整会议或活动时长。任务管理:当开始时间延迟或休息时,重新计算任务的剩余时间。

2. 事件倒计时器

倒计时时钟:从总时长中减去已过去的时间,以显示事件剩余时间。体育比赛计时器:根据暂停或中断动态调整比赛或对阵计时器。

3. 时间跟踪应用程序

工作日志:从总工作小时数中减去休息时间,以计算有效工作时间。项目管理:当项目任务发生延迟时,跟踪和调整项目任务的剩余时间。