idate()
Функция idate() в PHP извлекает отдельный компонент даты или времени из Unix-метки времени и возвращает его как целое число.
idate() — встроенная функция PHP, которая извлекает один компонент даты или времени из Unix-метки времени и возвращает его в виде целого числа. Название расшифровывается как integer date (целочисленная дата). В отличие от date(), которая формирует строку из одного или нескольких символов формата, idate() принимает ровно один символ формата и возвращает простое число, с которым можно сразу выполнять математические операции.
На этой странице описаны синтаксис, поддерживаемые символы формата, запускаемые примеры, отличия от date() и типичные подводные камни.
Синтаксис
idate(string $format, ?int $timestamp = null): int|false$format— один символ формата (см. таблицу ниже). Передача строки длиннее одного символа вызывает предупреждение и возвращаетfalse.$timestamp— необязательная Unix-метка времени (секунды с 1 января 1970 года, UTC). Если не указана, используются текущие дата и время.
Функция возвращает целое число или false в случае ошибки.
Символы формата
idate() поддерживает подмножество символов формата date() — только те, что производят числовое значение.
| Код | Возвращает | Пример |
|---|---|---|
Y | Четырёхзначный год | 2023 |
y | Двузначный год | 23 |
m | Номер месяца (1–12) | 3 |
n | Номер месяца (то же, что m) | 3 |
d | День месяца (1–31) | 5 |
j | День месяца (то же, что d) | 5 |
H | Час, 24-часовой формат (0–23) | 17 |
G | Час, 24-часовой формат (то же, что H) | 17 |
i | Минуты (0–59) | 30 |
s | Секунды (0–59) | 45 |
N | День недели по ISO (1 = понедельник … 7 = воскресенье) | 7 |
w | День недели (0 = воскресенье … 6 = суббота) | 0 |
z | День года, начиная с нуля (0–365) | 63 |
t | Количество дней в заданном месяце | 31 |
L | Високосный год? 1 — да, 0 — нет | 0 |
U | Сама Unix-метка времени | 1678037445 |
Важно:
idate()возвращает число, а не строку с ведущим нулём.idate('m')для марта вернёт целое число3, а не"03". Если нужен ведущий ноль, используйтеdate('m'), которая возвращает строку"03".
Базовый пример
<?php
// March 5, 2023, 17:30:45
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
echo idate('Y', $timestamp) . "\n"; // 2023
echo idate('m', $timestamp) . "\n"; // 3
echo idate('d', $timestamp) . "\n"; // 5
echo idate('H', $timestamp) . "\n"; // 17
echo idate('i', $timestamp) . "\n"; // 30
echo idate('s', $timestamp) . "\n"; // 45Поскольку возвращаемое значение является целым числом, его можно сразу использовать в арифметических операциях и сравнениях:
<?php
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
if (idate('N', $timestamp) >= 6) {
echo "It's the weekend.\n";
} else {
echo "It's a weekday.\n";
}
// March 5, 2023 was a Sunday (N = 7), so this prints:
// It's the weekend.Использование текущего времени
Если второй аргумент опущен, idate() использует текущие дату и время, что делает её удобной для быстрых проверок:
<?php
$currentYear = idate('Y');
echo "The current year is {$currentYear}.\n";
// Detect a leap year
echo idate('L') ? "This year is a leap year.\n" : "This year is not a leap year.\n";idate() и date()
idate() | date() | |
|---|---|---|
| Длина формата | Только один символ | Любое количество символов |
| Тип возвращаемого значения | int (или false) | string |
| Ведущие нули | Никогда (3) | Да, где определено ("03") |
| Сценарий использования | Нужно число для вычислений или сравнения | Нужна отформатированная, удобочитаемая строка |
<?php
$timestamp = mktime(9, 5, 0, 4, 2, 2024);
echo date('m', $timestamp) . "\n"; // "04" (string, zero-padded)
echo idate('m', $timestamp) . "\n"; // 4 (integer, no padding)Когда использовать
Используйте idate(), когда вам нужен отдельный компонент даты или времени в виде числа — например, для построения счётчика, сравнения двух значений, индексирования в массиве или дальнейших вычислений. Если цель — отобразить отформатированную дату или время, используйте date() (или strtotime() для разбора текста в метку времени).
Подводные камни
- Нет поддержки форматов из нескольких символов.
idate('Y-m-d')не работает — выдаёт предупреждение и возвращаетfalse. Вызывайтеidate()отдельно для каждого компонента или используйтеdate(). - Нет ведущих нулей. Не полагайтесь на
idate()для вывода фиксированной ширины: ведущие нули всегда отбрасываются. falseвыглядит как0. При ошибкеidate()возвращаетfalse, которое в нестрогом сравнении равно0. Используйте строгую проверку (=== false), если настоящий0(например, воскресенье при использованииw) является допустимым результатом.
Связанные функции
date()— форматирует метку времени в строку.mktime()— создаёт Unix-метку времени из компонентов даты и времени.strtotime()— разбирает строку с датой на английском языке в метку времени.time()— возвращает текущую Unix-метку времени.