如何解决java - 如何将int分钟转换为Java中的持续时间?
我正在尝试将持续时间与表示分钟的整数(因此是另一个持续时间)进行比较,以确定它是更长还是更短的时间。我正在尝试使用 compareTo(Duration duration) 方法,但我不能使用 int 作为参数。我如何将 int(分钟)转换为 Duration?
解决方法
您可以使用 ofMinutes
静态方法以分钟为单位创建持续时间。所以,举个愚蠢的例子
int compareDurations(Duration d) {
int myMinutes = 5;
Duration durationInMinutes = Duration.ofMinutes(myMinutes);
return d.compareTo(durationMinutes);
}
,
我总是发现涉及 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");
}
输出:
分钟更短或相同
如果您需要知道分钟是否严格缩短,代码当然会更长一些(无意开玩笑)。在某些情况下,一种方法确实涉及将分钟转换为 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");
}
分钟更短
我真的希望 Duration
类具有 isLonger()
和 isShorter()
方法(尽管刚刚建议的名称在涉及负持续时间时可能不太清楚)。然后我会建议将分钟也转换为 Duration
,就像在接受的答案中一样。
一种方式,使用 Duration:
Duration duration = Duration.of(10,ChronoUnit.SECONDS);
int seconds = 5;
System.out.println(duration.getSeconds() - seconds);
请注意,ChronoUnit 有很多有用的常量成员,例如 MINUTES
、DAYS
、{ {1}}、WEEKS
等
另一种方式,使用 LocalTime:
CENTURIES
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。