Idate: примеры (PHP)
idate(string $format, ?int $timestamp = null): int|falseФункция idate() возвращает целочисленное значение части даты/времени согласно заданному формату. В отличие от date(), функция возвращает только одно значение как integer, что может быть полезно для вычислений.
Функция обычно используется для получения числового представления отдельных компонентов времени, таких как год, месяц, день недели, без необходимости парсить строку.
idate(string $format, ?int $timestamp = null): int|false- $format (string) - Один символ форматирования. Список допустимых символов:
- B - Swatch Internet Time (от 0 до 999)
- d - День месяца (1-31)
- h - Час в 12-часовом формате (1-12)
- H - Час в 24-часовом формате (0-23)
- i - Минуты (0-59)
- I (заглавная i) - Признак летнего времени (1 если летнее время, 0 если нет)
- L - Признак високосного года (1 если високосный, 0 если нет)
- m - Номер месяца (1-12)
- N - Порядковый номер дня недели (1-понедельник, 7-воскресенье)
- o - Номер недели в году согласно ISO-8601
- s - Секунды (0-59)
- t - Количество дней в месяце (28-31)
- U - Количество секунд с начала Unix эпохи
- w - Порядковый номер дня недели (0-воскресенье, 6-суббота)
- W - Номер недели в году (по ISO-8601: недели начинаются с понедельника)
- y - Номер года, две цифры (например, 99 или 03)
- Y - Номер года, четыре цифры
- z - Порядковый номер дня в году (0-365)
- Z - Смещение часового пояса в секундах
- $timestamp (?int) - Необязательный параметр. Unix timestamp. Если не указан или равен null, используется текущее время.
Примеры показывают различные форматы вызова функции idate с разными параметрами.
echo idate('d');19$timestamp = strtotime('2023-12-25');
echo idate('m', $timestamp);12echo idate('L', strtotime('2024-01-01'));1echo idate('w', strtotime('2023-10-01'));0echo idate('N', strtotime('2023-10-01'));7В PHP существуют несколько функций для работы с датой и временем, каждая имеет свои особенности.
Возвращает форматированную строку даты. Может возвращать несколько компонентов одновременно, в отличие от idate, которая возвращает только одно целое число. Используется чаще, когда нужен читабельный вывод.
Возвращает ассоциативный массив с подробной информацией о дате/времени. Удобно, когда нужно получить сразу несколько значений.
Форматирует дату/время согласно локали. В PHP 8.1 считается устаревшей, вместо нее рекомендуется использовать IntlDateFormatter.
Передача строки длиннее одного символа приводит к неожиданным результатам, так как idate использует только первый символ.
// Неправильно: передается строка 'dm'
echo idate('dm');19 // Был использован только первый символ 'd'До PHP 8.0 функция возвращала false при ошибке. В PHP 8.0 и выше выбрасывается исключение TypeError при неверном типе аргумента.
// До PHP 8.0
var_dump(idate('d', 'invalid'));bool(false)// PHP 8.0+
// idate('d', 'invalid'); // Вызовет TypeErrorПутаница между idate и date может привести к ошибкам, когда ожидается строка, а возвращается число.
Функция больше не возвращает false при возникновении ошибки. Вместо этого выбрасывается исключение TypeError при передаче аргументов неверного типа. Параметр $timestamp теперь допускает значение null.
В PHP 5.1.0 и выше функция учитывает установленный часовой пояс. В версиях ранее 5.1.0 для корректной работы с часовыми поясами нужно было использовать date_default_timezone_set().
$birthday = strtotime('1990-05-15');
$today = time();
$daysSinceBirth = idate('z', $today) - idate('z', $birthday) +
(idate('Y', $today) - idate('Y', $birthday)) * 365;
echo "Количество дней с дня рождения: $daysSinceBirth";Количество дней с дня рождения: 12205$date = strtotime('2023-12-31');
$weekNumber = idate('W', $date);
echo "31 декабря 2023 находится в неделе номер: $weekNumber";31 декабря 2023 находится в неделе номер: 52function isWorkDay($timestamp) {
$dayOfWeek = idate('N', $timestamp);
return ($dayOfWeek >= 1 && $dayOfWeek <= 5);
}
$testDate = strtotime('2023-10-21');
echo isWorkDay($testDate) ? 'Рабочий день' : 'Выходной';Выходнойdate_default_timezone_set('Europe/Moscow');
$timestamp = time();
echo "Часовой пояс: " . idate('Z') / 3600 . " часа";Часовой пояс: 3 часа$beat = idate('B');
echo "Текущее время в интернет-формате: @$beat";Текущее время в интернет-формате: @500function getSeason($timestamp) {
$month = idate('m', $timestamp);
if ($month >= 3 && $month <= 5) return 'Весна';
if ($month >= 6 && $month <= 8) return 'Лето';
if ($month >= 9 && $month <= 11) return 'Осень';
return 'Зима';
}
echo getSeason(strtotime('2023-08-15'));ЛетоIdate в Python
Модуль datetime предоставляет аналогичные возможности через атрибуты объектов datetime.
from datetime import datetime
now = datetime.now()
day = now.day # Аналог idate('d')
month = now.month # Аналог idate('m')
print(f"Day: {day}, Month: {month}")Day: 19, Month: 10Idate в Javascript
Объект Date имеет методы для получения отдельных компонентов.
const now = new Date();
const day = now.getDate(); // idate('d')
const month = now.getMonth() + 1; // idate('m'), но в JS месяцы с 0
console.log(`Day: ${day}, Month: ${month}`);Day: 19, Month: 10Idate в MySQL
Функции извлечения частей даты из столбцов или значений.
SELECT DAY('2023-10-19') as day, -- Аналог idate('d')
MONTH('2023-10-19') as month; -- Аналог idate('m')day: 19, month: 10В Python и JavaScript работа с датами обычно объектно-ориентированная, в PHP и MySQL - через функции. Формат возвращаемых значений также отличается: в PHP idate всегда возвращает integer, в то время как аналоги в других языках могут возвращать числа как примитивы или в рамках объекта.