如何将 int(分钟)转换为 java 中的 Duration?
How can I turn an int (minutes) into a Duration in java?
我正在尝试将持续时间与代表分钟的整数(因此是另一个持续时间)进行比较,以确定它是更长还是更短的时间。我正在尝试使用 compareTo(Duration duration) 方法,但我不能使用 int 作为参数。我如何将该整数(分钟)转换为持续时间?
您可以使用 ofMinutes
静态方法创建以分钟为单位的持续时间。所以,作为一个愚蠢的例子
int compareDurations(Duration d) {
int myMinutes = 5;
Duration durationInMinutes = Duration.ofMinutes(myMinutes);
return d.compareTo(durationMinutes);
}
一种方式,Duration:
Duration duration = Duration.of(10, ChronoUnit.SECONDS);
int seconds = 5;
System.out.println(duration.getSeconds() - seconds);
请注意,ChronoUnit 有很多有用的常量成员,例如 MINUTES
、DAYS
、WEEKS
、CENTURIES
等
另一种方式,LocalTime:
LocalTime localTime = LocalTime.of(0, 0, 15); //hh-mm-ss
int seconds = 5;
System.out.println(localTime.getSecond() - seconds);
我总是觉得涉及 compareTo()
的代码难以阅读。因此,对于大多数目的,我更愿意以相反的方式进行:将您的 Duration
转换为分钟并使用普通 <
或 >
.
进行比较
int minutes = 7;
Duration dur = Duration.ofMinutes(7).plusSeconds(30);
if (minutes > dur.toMinutes()) {
System.out.println("The minutes are longer");
} else {
System.out.println("The minutes are shorter or the same");
}
输出:
The minutes are shorter or the same
如果您需要知道分钟数是否严格缩短,代码当然会更长一些(不是开玩笑)。在某些情况下,一种方法确实涉及将分钟转换为 Duration
:
if (minutes > dur.toMinutes()) {
System.out.println("The minutes are longer");
} else if (Duration.ofMinutes(minutes).equals(dur)) {
System.out.println("The minutes are the same");
} else {
System.out.println("The minutes are shorter");
}
The minutes are shorter
我真的希望 Duration
class 有方法 isLonger()
和 isShorter()
(尽管刚刚建议的名称在否定时可能不太清楚持续时间)。然后我会建议将分钟转换为 Duration
,就像在接受的答案中一样。
我正在尝试将持续时间与代表分钟的整数(因此是另一个持续时间)进行比较,以确定它是更长还是更短的时间。我正在尝试使用 compareTo(Duration duration) 方法,但我不能使用 int 作为参数。我如何将该整数(分钟)转换为持续时间?
您可以使用 ofMinutes
静态方法创建以分钟为单位的持续时间。所以,作为一个愚蠢的例子
int compareDurations(Duration d) {
int myMinutes = 5;
Duration durationInMinutes = Duration.ofMinutes(myMinutes);
return d.compareTo(durationMinutes);
}
一种方式,Duration:
Duration duration = Duration.of(10, ChronoUnit.SECONDS);
int seconds = 5;
System.out.println(duration.getSeconds() - seconds);
请注意,ChronoUnit 有很多有用的常量成员,例如 MINUTES
、DAYS
、WEEKS
、CENTURIES
等
另一种方式,LocalTime:
LocalTime localTime = LocalTime.of(0, 0, 15); //hh-mm-ss
int seconds = 5;
System.out.println(localTime.getSecond() - seconds);
我总是觉得涉及 compareTo()
的代码难以阅读。因此,对于大多数目的,我更愿意以相反的方式进行:将您的 Duration
转换为分钟并使用普通 <
或 >
.
int minutes = 7;
Duration dur = Duration.ofMinutes(7).plusSeconds(30);
if (minutes > dur.toMinutes()) {
System.out.println("The minutes are longer");
} else {
System.out.println("The minutes are shorter or the same");
}
输出:
The minutes are shorter or the same
如果您需要知道分钟数是否严格缩短,代码当然会更长一些(不是开玩笑)。在某些情况下,一种方法确实涉及将分钟转换为 Duration
:
if (minutes > dur.toMinutes()) {
System.out.println("The minutes are longer");
} else if (Duration.ofMinutes(minutes).equals(dur)) {
System.out.println("The minutes are the same");
} else {
System.out.println("The minutes are shorter");
}
The minutes are shorter
我真的希望 Duration
class 有方法 isLonger()
和 isShorter()
(尽管刚刚建议的名称在否定时可能不太清楚持续时间)。然后我会建议将分钟转换为 Duration
,就像在接受的答案中一样。