Path: blob/master/src/applications/calendar/parser/data/PhutilCalendarRelativeDateTime.php
12262 views
<?php12final class PhutilCalendarRelativeDateTime3extends PhutilCalendarProxyDateTime {45private $duration;67public function setOrigin(PhutilCalendarDateTime $origin) {8return $this->setProxy($origin);9}1011public function getOrigin() {12return $this->getProxy();13}1415public function setDuration(PhutilCalendarDuration $duration) {16$this->duration = $duration;17return $this;18}1920public function getDuration() {21return $this->duration;22}2324public function newPHPDateTime() {25$datetime = parent::newPHPDateTime();26$duration = $this->getDuration();2728if ($duration->getIsNegative()) {29$sign = '-';30} else {31$sign = '+';32}3334$map = array(35'weeks' => $duration->getWeeks(),36'days' => $duration->getDays(),37'hours' => $duration->getHours(),38'minutes' => $duration->getMinutes(),39'seconds' => $duration->getSeconds(),40);4142foreach ($map as $unit => $value) {43if (!$value) {44continue;45}46$datetime->modify("{$sign}{$value} {$unit}");47}4849return $datetime;50}5152public function newAbsoluteDateTime() {53$clone = clone $this;5455if ($clone->getTimezone()) {56$clone->setViewerTimezone(null);57}5859$datetime = $clone->newPHPDateTime();6061return id(new PhutilCalendarAbsoluteDateTime())62->setYear((int)$datetime->format('Y'))63->setMonth((int)$datetime->format('m'))64->setDay((int)$datetime->format('d'))65->setHour((int)$datetime->format('H'))66->setMinute((int)$datetime->format('i'))67->setSecond((int)$datetime->format('s'))68->setIsAllDay($clone->getIsAllDay())69->setTimezone($clone->getTimezone())70->setViewerTimezone($this->getViewerTimezone());71}7273}747576