strtotime().'); } if (! is_numeric($time)) { $time = time(); } $span = self::timespan($timestamp, $time); return $span; } /** * Timespan * * Returns a span of seconds in this format: * 10 days 14 hours 36 minutes 47 seconds * * @access public * @param integer $seconds a number of seconds * @param integer $time Unix timestamp (Default is: time()) * @param integer $precision 精度 * @return integer */ public static function timespan($seconds = 1, $time = '') { if (! is_numeric($seconds)) { $seconds = 1; } if (! is_numeric($time)) { $time = time(); } if ($time <= $seconds) { $seconds = 1; } else { $seconds = $time - $seconds; } $return = array(); $years = floor($seconds / 31536000); if ($years > 0) { $return['year'] = $years; } $seconds -= $years * 31536000; $months = floor($seconds / 2628000); if ($years > 0 or $months > 0) { if ($months > 0) { $return['month'] = $months; } $seconds -= $months * 2628000; } $weeks = floor($seconds / 604800); if ($years > 0 or $months > 0 or $weeks > 0) { if ($weeks > 0) { $return['week'] = $weeks; } $seconds -= $weeks * 604800; } $days = floor($seconds / 86400); if ($months > 0 or $weeks > 0 or $days > 0) { if ($days > 0) { $return['day'] = $days; } $seconds -= $days * 86400; } $hours = floor($seconds / 3600); if ($days > 0 or $hours > 0) { if ($hours > 0) { $return['hour'] = $hours; } $seconds -= $hours * 3600; } $minutes = floor($seconds / 60); if ($days > 0 or $hours > 0 or $minutes > 0) { if ($minutes > 0) { $return['minute'] = $minutes; } $seconds -= $minutes * 60; } $return['second'] = $seconds; return $return; } } // End ^ LF ^ encoding