public function testAddingOneDayDateInterval() { $expected = new TimePoint(1963, 11, 22, 11, 30, 0, 'America/Detroit'); $start = new TimePoint(1963, 11, 22, 12, 30, 0, 'America/Detroit'); $int = new TimeInterval('PT1H'); $actual = $start->sub($int); $this->assertSame($expected->format('Y-m-d H:i:s', 'America/Detroit'), $actual->format('Y-m-d H:i:s', 'America/Detroit')); }
/** * @param TimePoint $date * * @return DateTime */ private function timePointToDateTime(TimePoint $date) { $parserFormat = '@^(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)-(\\d+)$@'; $parsableFormat = 'Y-n-j-G-i-s'; $inputFormat = '%04d-%02d-%02d %02d:%02d:%02d'; $tz = new DateTimeZone('UTC'); preg_match($parserFormat, $date->format($parsableFormat, 'UTC'), $t); return new DateTime(sprintf($inputFormat, $t[1], $t[2], $t[3], $t[4], $t[5], $t[6]), $tz); }
/** * Format a DateTime or TimePoint. Invalid values will output an empty string. * * @param TimePoint|DateTime|null $time * @param string $format * * @return string */ public function formatTimepoint($time, $format) { if ($time instanceof TimePoint) { return $time->format($format, $this->displayTimezone); } if ($time instanceof DateTime) { $formatted = clone $time; $formatted->setTimezone(new DateTimeZone($this->displayTimezone)); return $formatted->format($format); } return ''; }