public function testTimeSince() { $datetime2 = date('Y-m-d H:i:s', strtotime('-1day')); $datetime3 = date('Y-m-d H:i:s', strtotime('-2 month 2 days')); $datetimes = array($this->datetime => $this->o, $datetime2 => new DateTime($datetime2), $datetime3 => new DateTime($datetime3)); foreach ($datetimes as $datetime => $datetimeObj) { $now = new \DateTime($datetime); $int = $now->diff(new \DateTime()); $map = array('y' => 'year', 'm' => 'month', 'd' => 'day', 'h' => 'hour', 'i' => 'minute', 's' => 'second'); $timeSince = array(); foreach ($map as $k => $v) { if ($int->{$k}) { $timeSince[$k] = $int->{$k} . ' ' . $v . ($int->{$k} == 1 ? '' : 's'); } } $this->assertEquals(implode(', ', $timeSince), $datetimeObj->timeSince('now', true)); unset($timeSince['s']); $this->assertEquals(implode(', ', $timeSince), $datetimeObj->timeSince()); } }