/** * Function to convert a static time into a relative measurement * * @param string $date The date to convert * @param string $unit The optional unit of measurement to return * if the value of the diff is greater than one * @param string $time An optional time to compare to, defaults to now * * @return string The converted time string * * @since 11.3 */ public static function relative($date, $unit = null, $time = null) { if (is_null($time)) { // Get now $time = Factory::getDate('now'); } // Get the difference in seconds between now and the time $diff = strtotime($time) - strtotime($date); // Less than a minute if ($diff < 60) { return Text::_('JLIB_HTML_DATE_RELATIVE_LESSTHANAMINUTE'); } // Round to minutes $diff = round($diff / 60); // 1 to 59 minutes if ($diff < 60 || $unit == 'minute') { return Text::plural('JLIB_HTML_DATE_RELATIVE_MINUTES', $diff); } // Round to hours $diff = round($diff / 60); // 1 to 23 hours if ($diff < 24 || $unit == 'hour') { return Text::plural('JLIB_HTML_DATE_RELATIVE_HOURS', $diff); } // Round to days $diff = round($diff / 24); // 1 to 6 days if ($diff < 7 || $unit == 'day') { return Text::plural('JLIB_HTML_DATE_RELATIVE_DAYS', $diff); } // Round to weeks $diff = round($diff / 7); // 1 to 4 weeks if ($diff <= 4 || $unit == 'week') { return Text::plural('JLIB_HTML_DATE_RELATIVE_WEEKS', $diff); } // Over a month, return the absolute time return Html::_('date', $date); }
/** * Test... * * @covers Joomla\Language\Text::plural * * @return void * * @since 1.1.2 */ public function testPlural() { $string = "bar's"; // @todo change it to Text::plural($string); $output = Text::plural($string, 0); $this->assertEquals($string, $output); $nStrings = count(TestHelper::getValue($this->object, 'strings')); $options = array('jsSafe' => true); $output = Text::plural($string, 0, $options); $this->assertEquals("bar\\'s", $output); $this->assertCount($nStrings, TestHelper::getValue($this->object, 'strings')); }