/** * Calculates the difference between dates. * * @param DateTime $base The base date. * @param DateTime $datetime The date to compare to. Default is null and this means that * the base date will be compared to the current time. * * @param integer $detailLevel The level of detail to retrieve. * * @return array * * @since 2.0.0 */ private function calc(DateTime $base, DateTime $datetime = null, $detailLevel = 1) { $this->translator = $base->getTranslator(); $datetime = is_null($datetime) ? DateTime::now() : $datetime; $detailLevel = intval($detailLevel); $diff = $this->diffInUnits($base->diff($datetime, true), $detailLevel); $item = 'just_now'; if (!$this->isNow($diff)) { $item = $base->isAfter($datetime) ? 'in' : 'ago'; } return array($item, $diff); }
/** * since * * @param string|DateTime $date * * @return string */ public function since($date) { if (!$date instanceof DateTime) { $date = new DateTime($date); } $now = DateTime::now(); $compare = DateTime::now(); $compare = $compare->subDays(30); if ($date->isBefore($compare)) { return $date->format('l, d F Y'); } return $now->since($date); }
/** * Return a value of the property. * * @param DateTime $datetime The DateTime object. * @param string $name The name of the property. * * @return string * * @since 2.0.0 */ public function get(DateTime $datetime, $name) { $value = null; switch ($name) { case 'daysinmonth': $value = $datetime->format('t'); break; case 'dayofweek': $value = $datetime->format('N'); break; case 'dayofyear': $value = $datetime->format('z'); break; case 'isleapyear': $value = (bool) $datetime->format('L'); break; case 'day': $value = $datetime->format('d'); break; case 'hour': $value = $datetime->format('H'); break; case 'minute': $value = $datetime->format('i'); break; case 'second': $value = $datetime->format('s'); break; case 'month': $value = $datetime->format('m'); break; case 'ordinal': $value = $datetime->format('S'); break; case 'week': $value = $datetime->format('W'); break; case 'year': $value = $datetime->format('Y'); break; default: $trace = debug_backtrace(); trigger_error('Undefined property: ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE); } return $value; }