/var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/I18n
Edit: /var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/I18n/FrozenTime.php (9915B)
'day',
'month' => 'day',
'week' => 'day',
'day' => 'hour',
'hour' => 'minute',
'minute' => 'minute',
'second' => 'second',
];
/**
* The end of relative time telling
*
* @var string
* @see \Cake\I18n\FrozenTime::timeAgoInWords()
*/
public static $wordEnd = '+1 month';
/**
* serialise the value as a Unix Timestamp
*
* @var string
*/
public const UNIX_TIMESTAMP_FORMAT = 'unixTimestampFormat';
/**
* Create a new immutable time instance.
*
* @param string|int|\DateTimeInterface|null $time Fixed or relative time
* @param \DateTimeZone|string|null $tz The timezone for the instance
*/
public function __construct($time = null, $tz = null)
{
if ($time instanceof DateTimeInterface) {
$tz = $time->getTimezone();
$time = $time->format('Y-m-d H:i:s.u');
}
if (is_numeric($time)) {
$time = '@' . $time;
}
parent::__construct($time, $tz);
}
/**
* Returns either a relative or a formatted absolute date depending
* on the difference between the current time and this object.
*
* ### Options:
*
* - `from` => another Time object representing the "now" time
* - `format` => a fall back format if the relative time is longer than the duration specified by end
* - `accuracy` => Specifies how accurate the date should be described (array)
* - year => The format if years > 0 (default "day")
* - month => The format if months > 0 (default "day")
* - week => The format if weeks > 0 (default "day")
* - day => The format if weeks > 0 (default "hour")
* - hour => The format if hours > 0 (default "minute")
* - minute => The format if minutes > 0 (default "minute")
* - second => The format if seconds > 0 (default "second")
* - `end` => The end of relative time telling
* - `relativeString` => The printf compatible string when outputting relative time
* - `absoluteString` => The printf compatible string when outputting absolute time
* - `timezone` => The user timezone the timestamp should be formatted in.
*
* Relative dates look something like this:
*
* - 3 weeks, 4 days ago
* - 15 seconds ago
*
* Default date formatting is d/M/YY e.g: on 18/2/09. Formatting is done internally using
* `i18nFormat`, see the method for the valid formatting strings
*
* The returned string includes 'ago' or 'on' and assumes you'll properly add a word
* like 'Posted ' before the function output.
*
* NOTE: If the difference is one week or more, the lowest level of accuracy is day
*
* @param array $options Array of options.
* @return string Relative time string.
*/
public function timeAgoInWords(array $options = []): string
{
/** @psalm-suppress UndefinedInterfaceMethod */
return static::getDiffFormatter()->timeAgoInWords($this, $options);
}
/**
* Get list of timezone identifiers
*
* @param int|string|null $filter A regex to filter identifier
* Or one of DateTimeZone class constants
* @param string|null $country A two-letter ISO 3166-1 compatible country code.
* This option is only used when $filter is set to DateTimeZone::PER_COUNTRY
* @param bool|array $options If true (default value) groups the identifiers list by primary region.
* Otherwise, an array containing `group`, `abbr`, `before`, and `after`
* keys. Setting `group` and `abbr` to true will group results and append
* timezone abbreviation in the display value. Set `before` and `after`
* to customize the abbreviation wrapper.
* @return array List of timezone identifiers
* @since 2.2
*/
public static function listTimezones($filter = null, ?string $country = null, $options = []): array
{
if (is_bool($options)) {
$options = [
'group' => $options,
];
}
$defaults = [
'group' => true,
'abbr' => false,
'before' => ' - ',
'after' => null,
];
$options += $defaults;
$group = $options['group'];
$regex = null;
if (is_string($filter)) {
$regex = $filter;
$filter = null;
}
if ($filter === null) {
$filter = DateTimeZone::ALL;
}
$identifiers = DateTimeZone::listIdentifiers($filter, (string)$country) ?: [];
if ($regex) {
foreach ($identifiers as $key => $tz) {
if (!preg_match($regex, $tz)) {
unset($identifiers[$key]);
}
}
}
if ($group) {
$groupedIdentifiers = [];
$now = time();
$before = $options['before'];
$after = $options['after'];
foreach ($identifiers as $tz) {
$abbr = '';
if ($options['abbr']) {
$dateTimeZone = new DateTimeZone($tz);
$trans = $dateTimeZone->getTransitions($now, $now);
$abbr = isset($trans[0]['abbr']) ?
$before . $trans[0]['abbr'] . $after :
'';
}
$item = explode('/', $tz, 2);
if (isset($item[1])) {
$groupedIdentifiers[$item[0]][$tz] = $item[1] . $abbr;
} else {
$groupedIdentifiers[$item[0]] = [$tz => $item[0] . $abbr];
}
}
return $groupedIdentifiers;
}
return array_combine($identifiers, $identifiers);
}
}