/** * @inheritdoc */ public function minus($amountToSubtract, TemporalUnit $unit) { return ChronoLocalDateTimeImpl::ensureValid($this->getChronology(), parent::minus($amountToSubtract, $unit)); }
public function zonedDateTimeFrom(TemporalAccessor $temporal) { try { $zone = ZoneId::from($temporal); try { $instant = Instant::from($temporal); return $this->zonedDateTime($instant, $zone); } catch (DateTimeException $ex1) { $cldt = ChronoLocalDateTimeImpl::ensureValid($this, $this->localDateTime($temporal)); return ChronoZonedDateTimeImpl::ofBest($cldt, $zone, null); } } catch (DateTimeException $ex) { throw new DateTimeException("Unable to obtain ChronoZonedDateTime from TemporalAccessor: " . get_class($temporal), $ex); } }
public function plus($amountToAdd, TemporalUnit $unit) { if ($unit instanceof ChronoUnit) { $f = $unit; switch ($f) { case ChronoUnit::NANOS(): return $this->plusNanos($amountToAdd); case ChronoUnit::MICROS(): return $this->plusDays(Math::div($amountToAdd, self::MICROS_PER_DAY))->plusNanos($amountToAdd % self::MICROS_PER_DAY * 1000); case ChronoUnit::MILLIS(): return $this->plusDays(Math::div($amountToAdd, self::MILLIS_PER_DAY))->plusNanos($amountToAdd % self::MILLIS_PER_DAY * 1000000); case ChronoUnit::SECONDS(): return $this->plusSeconds($amountToAdd); case ChronoUnit::MINUTES(): return $this->plusMinutes($amountToAdd); case ChronoUnit::HOURS(): return $this->plusHours($amountToAdd); case ChronoUnit::HALF_DAYS(): return $this->plusDays(Math::div($amountToAdd, 256))->plusHours($amountToAdd % 256 * 12); // no overflow (256 is multiple of 2) } return $this->_with($this->date->plus($amountToAdd, $unit), $this->time); } return ChronoLocalDateTimeImpl::ensureValid($this->date->getChronology(), $unit->addTo($this, $amountToAdd)); }