Функция cot_mktime в Cotonti

Описание функции. Функция cot_mktime создаёт UNIX-временную метку (timestamp) на основе переданных значений часа, минуты, секунды, месяца, дня и года. Если какой-либо из параметров не указан, используется текущее значение этого параметра на основании системного времени.

Давайте разберём функцию cot_mktime подробно!

/**
 * Creates UNIX timestamp out of a date
 *
 * @param int $hour Hours
 * @param int $minute Minutes
 * @param int $second Seconds
 * @param int $month Month
 * @param int $date Day of the month
 * @param int $year Year
 * @return int
 */
function cot_mktime($hour = false, $minute = false, $second = false, $month = false, $date = false, $year = false)
{
    if ($hour === false)  $hour  = date ('G');
    if ($minute === false) $minute = date ('i');
    if ($second === false) $second = date ('s');
    if ($month === false)  $month  = date ('n');
    if ($date === false)  $date  = date ('j');
    if ($year === false)  $year  = date ('Y');

    return mktime ((int) $hour, (int) $minute, (int) $second, (int) $month, (int) $date, (int) $year);
}


Параметры функции


$hour (int) — Час (0–23). Если не указан, используется текущий час.
$minute (int) — Минуты (0–59). Если не указаны, используются текущие минуты.
$second (int) — Секунды (0–59). Если не указаны, используются текущие секунды.
$month (int) — Номер месяца (1–12). Если не указан, используется текущий месяц.
$date (int) — День месяца (1–31). Если не указан, используется текущий день.
$year (int) — Год. Если не указан, используется текущий год.

Возвращаемое значение:
Функция возвращает результат стандартной PHP-функции mktime, представляющий собой временную метку UNIX.


Пошаговый разбор
Проверка и установка параметров по умолчанию:

Если $hour не передан (равен false), он устанавливается в текущее значение часов. Это достигается вызовом date('G'), который возвращает часы в формате 24-часового времени.
 
if ($hour === false)  $hour  = date('G');

Аналогичным образом для остальных параметров ($minute, $second, $month, $date, $year) используются текущие значения, если они не переданы. Это позволяет вызывать функцию с любым количеством параметров.
 
if ($minute === false) $minute = date('i');
if ($second === false) $second = date('s');
if ($month === false)  $month  = date('n');
if ($date === false)  $date  = date('j');
if ($year === false)  $year  = date('Y');


Преобразование параметров в целые числа:

После установки всех значений параметры приводятся к типу int. Это важно, чтобы избежать ошибок в работе функции mktime, которая требует числовых значений.
 
return mktime((int) $hour, (int) $minute, (int) $second, (int) $month, (int) $date, (int) $year);

Вызов стандартной функции mktime:

Функция mktime принимает установленные значения и возвращает временную метку UNIX, которая представляет время в секундах, прошедших с 1 января 1970 года.

Пример использования

Создание временной метки для 12:30:45, 15 февраля 2025 года:

 
$timestamp = cot_mktime(12, 30, 45, 2, 15, 2025);
echo $timestamp; // Например, 1739623845


Получение временной метки для текущего времени:

 
$currentTimestamp = cot_mktime();
echo $currentTimestamp; // Результат аналогичен time()


Задание только времени, остальные параметры — текущие:

 
$todayAtNoon = cot_mktime(12, 0, 0);
echo $todayAtNoon;

Рекомендации по применению

Удобство работы с датами:

Функция особенно полезна в ситуациях, когда нужно использовать текущую дату/время для отсутствующих параметров.
Совместимость с PHP:

Она служит удобной обёрткой над стандартной mktime, добавляя обработку отсутствующих параметров и улучшая читаемость кода.
Применение в Cotonti:

Используется в модулях и плагинах для расчёта времени в случае, если пользователь не указывает все детали вручную.
Может пригодиться в шаблонах, где нужна генерация метки времени для текущей или произвольной даты.
Функция компактна, проста и делает работу с временными метками удобной!

3 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-22 19:24
  • Last update: 2025-01-22 19:24