8023764: Optimize Period addition
Optimise plus/minus for common cases Reviewed-by: sherman
This commit is contained in:
parent
cbe29b7b72
commit
c762984485
jdk/src/share/classes/java/time
@ -1125,6 +1125,11 @@ public final class LocalDate
|
||||
*/
|
||||
@Override
|
||||
public LocalDate plus(TemporalAmount amountToAdd) {
|
||||
Objects.requireNonNull(amountToAdd, "amountToAdd");
|
||||
if (amountToAdd instanceof Period) {
|
||||
Period periodToAdd = (Period) amountToAdd;
|
||||
return plusMonths(periodToAdd.toTotalMonths()).plusDays(periodToAdd.getDays());
|
||||
}
|
||||
return (LocalDate) amountToAdd.addTo(this);
|
||||
}
|
||||
|
||||
@ -1353,6 +1358,11 @@ public final class LocalDate
|
||||
*/
|
||||
@Override
|
||||
public LocalDate minus(TemporalAmount amountToSubtract) {
|
||||
Objects.requireNonNull(amountToSubtract, "amountToSubtract");
|
||||
if (amountToSubtract instanceof Period) {
|
||||
Period periodToSubtract = (Period) amountToSubtract;
|
||||
return minusMonths(periodToSubtract.toTotalMonths()).minusDays(periodToSubtract.getDays());
|
||||
}
|
||||
return (LocalDate) amountToSubtract.subtractFrom(this);
|
||||
}
|
||||
|
||||
|
@ -1129,6 +1129,11 @@ public final class LocalDateTime
|
||||
*/
|
||||
@Override
|
||||
public LocalDateTime plus(TemporalAmount amountToAdd) {
|
||||
Objects.requireNonNull(amountToAdd, "amountToAdd");
|
||||
if (amountToAdd instanceof Period) {
|
||||
Period periodToAdd = (Period) amountToAdd;
|
||||
return with(date.plus(periodToAdd), time);
|
||||
}
|
||||
return (LocalDateTime) amountToAdd.addTo(this);
|
||||
}
|
||||
|
||||
@ -1343,6 +1348,11 @@ public final class LocalDateTime
|
||||
*/
|
||||
@Override
|
||||
public LocalDateTime minus(TemporalAmount amountToSubtract) {
|
||||
Objects.requireNonNull(amountToSubtract, "amountToSubtract");
|
||||
if (amountToSubtract instanceof Period) {
|
||||
Period periodToSubtract = (Period) amountToSubtract;
|
||||
return with(date.minus(periodToSubtract), time);
|
||||
}
|
||||
return (LocalDateTime) amountToSubtract.subtractFrom(this);
|
||||
}
|
||||
|
||||
|
@ -1540,6 +1540,11 @@ public final class ZonedDateTime
|
||||
*/
|
||||
@Override
|
||||
public ZonedDateTime plus(TemporalAmount amountToAdd) {
|
||||
Objects.requireNonNull(amountToAdd, "amountToAdd");
|
||||
if (amountToAdd instanceof Period) {
|
||||
Period periodToAdd = (Period) amountToAdd;
|
||||
return resolveLocal(dateTime.plus(periodToAdd));
|
||||
}
|
||||
return (ZonedDateTime) amountToAdd.addTo(this);
|
||||
}
|
||||
|
||||
@ -1787,6 +1792,11 @@ public final class ZonedDateTime
|
||||
*/
|
||||
@Override
|
||||
public ZonedDateTime minus(TemporalAmount amountToSubtract) {
|
||||
Objects.requireNonNull(amountToSubtract, "amountToSubtract");
|
||||
if (amountToSubtract instanceof Period) {
|
||||
Period periodToSubtract = (Period) amountToSubtract;
|
||||
return resolveLocal(dateTime.minus(periodToSubtract));
|
||||
}
|
||||
return (ZonedDateTime) amountToSubtract.subtractFrom(this);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user