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
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 8.0 удален параметр is_dst, который ранее указывал, действует ли летнее время. Теперь часовой пояс определяется настройками date_default_timezone_set.
С PHP 5.1 функция возвращает false при передаче некорректных аргументов, ранее могла возвращать -1.
$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
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
$last_day = date('Y-m-d', mktime(0, 0, 0, 4, 0, 2025));
echo $last_day;2025-03-31
import time
timestamp = time.mktime((2025, 3, 10, 15, 30, 0, 0, 0, 0))
print(timestamp)1741613400.0
const date = new Date(2025, 2, 10, 15, 30, 0);
console.log(Math.floor(date.getTime() / 1000));1741613400
SELECT UNIX_TIMESTAMP('2025-03-10 15:30:00');1741613400