Mktime: примеры (PHP)

Полное руководство по функции mktime в языке PHP
Раздел: Дата и время
mktime(int $hour, ?int $minute = null, ?int $second = null, ?int $month = null, ?int $day = null, ?int $year = null): int|false

Функция mktime в PHP возвращает Unix-временную метку для заданной даты и времени. Она применяется для создания временных меток из отдельных компонентов даты или для выполнения арифметических операций с датами.

Аргументы функции

Функция принимает до шести необязательных аргументов в следующем порядке:

  • час (0-23)
  • минута (0-59)
  • секунда (0-59)
  • месяц (1-12)
  • день (1-31)
  • год (1-9999)

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

Основные примеры
Получение текущей метки
echo mktime();
1741534800
Задание конкретной даты
echo mktime(15, 30, 0, 3, 10, 2025);
1741613400
Корректировка значений
echo date('Y-m-d H:i:s', mktime(25, 61, 61, 13, 32, 2024));
2025-03-03 02:02:01
Похожие функции в PHP

strtotime преобразует текстовое описание даты на английском языке во временную метку. Удобна для парсинга строк.

gmmktime работает аналогично mktime, но возвращает метку для времени по Гринвичу (GMT).

DateTime::createFromFormat создает объект DateTime из строки с указанным форматом, предоставляет больше возможностей для работы с датами.

Типичные ошибки
Некорректный порядок аргументов
$timestamp = mktime(2025, 3, 10); // Год, месяц, день
echo $timestamp;
1678395600 (неверный результат)
Использование устаревшего параметра
// В PHP 8.0 параметр is_dst удален
$timestamp = mktime(15, 30, 0, 3, 10, 2025, 1);
Fatal error: Uncaught ArgumentCountError
Изменения в версиях PHP

В PHP 8.0 удален параметр is_dst, который ранее указывал, действует ли летнее время. Теперь часовой пояс определяется настройками date_default_timezone_set.

С PHP 5.1 функция возвращает false при передаче некорректных аргументов, ранее могла возвращать -1.

Расширенные примеры
Вычисление разницы между датами
Пример php
$date1 = mktime(0, 0, 0, 3, 10, 2025);
$date2 = mktime(0, 0, 0, 3, 15, 2025);
$diff_days = ($date2 - $date1) / (60 * 60 * 24);
echo $diff_days;
5
Проверка корректности даты
Пример php
function check_date($y, $m, $d) {
    return checkdate($m, $d, $y) ? mktime(0, 0, 0, $m, $d, $y) : false;
}
echo check_date(2025, 2, 29) ? 'Valid' : 'Invalid';
Invalid
Получение последнего дня месяца
Пример php
$last_day = date('Y-m-d', mktime(0, 0, 0, 4, 0, 2025));
echo $last_day;
2025-03-31
Аналоги в других языках
Python
import time
timestamp = time.mktime((2025, 3, 10, 15, 30, 0, 0, 0, 0))
print(timestamp)
1741613400.0
JavaScript
const date = new Date(2025, 2, 10, 15, 30, 0);
console.log(Math.floor(date.getTime() / 1000));
1741613400
MySQL
SELECT UNIX_TIMESTAMP('2025-03-10 15:30:00');
1741613400

PHP mktime function comments

En
Mktime Get Unix timestamp for a date