/** * @param Duration $duration * * @return Instant */ public function plus(Duration $duration) { if ($duration->isZero()) { return $this; } $seconds = $this->epochSecond + $duration->getSeconds(); $nanos = $this->nano + $duration->getNanos(); if ($nanos >= LocalTime::NANOS_PER_SECOND) { $nanos -= LocalTime::NANOS_PER_SECOND; $seconds++; } return new Instant($seconds, $nanos); }
/** * Returns a copy of this LocalTime with the specific duration added. * * The calculation wraps around midnight. * * @param Duration $duration * * @return LocalTime */ public function plusDuration(Duration $duration) { return $this->plusSeconds($duration->getSeconds())->plusNanos($duration->getNanos()); }
/** * Returns a copy of this LocalDateTime with the specific Duration added. * * @param Duration $duration * * @return LocalDateTime */ public function plusDuration(Duration $duration) { $days = Math::floorDiv($duration->getSeconds(), LocalTime::SECONDS_PER_DAY); return $this->with($this->date->plusDays($days), $this->time->plusDuration($duration)); }
/** * @param integer $seconds The expected seconds. * @param integer $nanos The expected nanos. * @param Duration $duration The duration to test. */ protected function assertDurationIs($seconds, $nanos, Duration $duration) { $this->compare([$seconds, $nanos], [$duration->getSeconds(), $duration->getNanos()]); }