/** * @param mixed $v * @return int * @throws DFE */ function df_01($v) { /** @var int $result */ $result = df_int($v); df_assert_in($result, [0, 1]); return $result; }
/** * Создаёт объект-дату по строке вида «20131115153657». * @param string $timestamp * @param string|null $offsetType [optional] * @return ZD */ function df_date_from_timestamp_14($timestamp, $offsetType = null) { df_assert(ctype_digit($timestamp)); df_assert_eq(14, strlen($timestamp)); // Почему-то new Zend_Date($timestamp, 'yMMddHHmmss') у меня не работает /** @var string $pattern */ $pattern = '#(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})#'; /** @var int[] $matches */ $matches = []; /** @var int $r */ $r = preg_match($pattern, $timestamp, $matches); df_assert_eq(1, $r); /** @var int $hour */ $hour = df_nat0(dfa($matches, 4)); if ($offsetType) { df_assert_in($offsetType, ['UTC', 'GMT']); /** @var int $offsetFromGMT */ $offsetFromGMT = df_round(df_int(df_dts(ZD::now(), ZD::TIMEZONE_SECS)) / 3600); $hour += $offsetFromGMT; if ('UTC' === $offsetType) { $hour++; } } return new ZD(['year' => dfa($matches, 1), 'month' => dfa($matches, 2), 'day' => dfa($matches, 3), 'hour' => $hour, 'minute' => dfa($matches, 5), 'second' => dfa($matches, 6)]); }
/** * @param int $number * @param string $gender * @return string */ private function getNaturalNumberInWords($number, $gender) { df_param_integer($number, 0); df_param_between($number, 0, 0, self::MAX_NUMBER); df_param_string($gender, 1); df_assert_in($gender, [self::GENDER__MALE, self::GENDER__FEMALE]); /** @var string $result */ $result = 'ноль'; if (0 !== $number) { $result = preg_replace(['/s+/', '/\\s$/'], [' ', ''], $this->getNum1E9($number, $gender)); } df_result_string($result); return $result; }