yet*_*der 7 java date period java-8
如何比较 java 8 中的两个句点?
例如
Period one = Period.of(10,0,0);
Period two = Period.of(8,0,0);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一大于二。
Period确实,由于未定义一个月的标准长度,因此在一般情况下比较两个对象没有意义。
但是,在许多情况下,您可以很好地接受与以下类似的实现。该合同将类似于以下合同compareTo():
public int comparePeriodsApproximately(Period p1, Period p2) {
return period2Days(p1) - period2Days(p2);
}
private int period2Days(Period p) {
if (p == null) {
return 0;
}
return (p.getYears() * 12 + p.getMonths()) * 30 + p.getDays();
}
Run Code Online (Sandbox Code Playgroud)
小智 3
JB Nizet 说得对。您无法比较期间,根据Period类中的Java文档,Java中提供了与Period(Duration)类似的类,您可以根据您的业务需求使用它。
“当添加到 ZonedDateTime 时,持续时间和周期在夏令时的处理上有所不同。持续时间将添加精确的秒数,因此一天的持续时间始终恰好是 24 小时。相比之下,周期将添加概念上的一天,试图保持当地时间。”
Period period = Period.of(10, 0, 0);
Period period2 = Period.of(10, 0, 0);
// No compareTo method in period
System.out.println(period.compareTo(period2));
Duration duration = Duration.ofDays(3);
Duration duration2 = Duration.ofDays(3);
// Can compare durations as it gives you the exact time
System.out.println(duration.compareTo(duration2));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10557 次 |
| 最近记录: |