Дата и время в PHP: функция date() и её возможности

Раздел: Программирование на PHP -> Работа с датами в PHP

Основы функции date()

Функция date() в PHP позволяет форматировать временную метку (Unix timestamp) в строку даты и времени. Если метка не указана, используется текущее время сервера. Рассмотрим базовое применение и различные варианты.

Базовое использование

Самый простой способ вывести текущую дату и время:

echo date('Y-m-d H:i:s');

Php дата в timestamp (преобразование даты в timestamp в php)

Результат (пример):

2025-02-23 14:30:00

функция дата php (функция date() в php)

Символы формата: Y - год (4 цифры), m - месяц (01-12), d - день (01-31), H - часы (00-23), i - минуты (00-59), s - секунды (00-59).

Варианты использования

Как вывести дату в российском формате дд.мм.гггг?

echo date('d.m.Y');

Php сравнение дат (сравнение дат в php)

Результат:

23.02.2025

прибавить к дате php (прибавление дней к дате в php)

Ошибка: неправильный порядок символов, например date('Y.d.m') даст 2025.23.02, что не соответствует ожиданиям.

Как получить вчерашнюю или завтрашнюю дату?

echo date('Y-m-d', strtotime('-1 day'));
echo date('Y-m-d', strtotime('+1 week'));

дата php mysql (дата в php и mysql)

strtotime преобразует относительное выражение в timestamp. Результат для текущей даты 2025-02-23:

2025-02-22
2025-03-02

Php разница дат (разница между датами в php)

Проблема: при переводе часов или переходе на летнее время strtotime может дать неверный результат. Для точных операций лучше использовать DateTime.

Как учесть часовой пояс?

date_default_timezone_set('Europe/Moscow');
echo date('Y-m-d H:i:s');

Php дата в строку (преобразование даты в строку в php)

Или с помощью объекта DateTime:

$date = new DateTime('now', new DateTimeZone('Asia/Vladivostok'));
echo $date->format('Y-m-d H:i:s');

Php дата между (проверка даты между двумя датами в php)

Результат будет соответствовать указанному часовому поясу.

Типичная ошибка: забыть установить часовой пояс - тогда используется UTC, что может отличаться от локального времени.

Как вывести название месяца на русском языке?

setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%d %B %Y', time());

Php 7 дата (даты в php 7)

Или через IntlDateFormatter (рекомендуется):

$fmt = new IntlDateFormatter('ru_RU', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
echo $fmt->format(time());

Php дата год (получение года из даты в php)

Результат:

23 февраля 2025 г.

Php текущая дата (получение текущей даты в php)

Проблема: setlocale требует установленной локали на сервере, IntlDateFormatter требует расширения intl.

Как вывести дату из произвольной временной метки?

$timestamp = 1703293200; // 25 декабря 2023 00:00
echo date('d.m.Y H:i', $timestamp);

Php date ru (php дата на русском)

Результат:

25.12.2023 00:00

Ошибка: передача некорректной метки (не число) приведет к warning и возврату false.

Расширенные примеры

Создание даты из компонентов

Пример
$timestamp = mktime(14, 30, 0, 12, 25, 2023); // 25.12.2023 14:30:00
echo date('Y-m-d H:i:s', $timestamp);

Результат:

2023-12-25 14:30:00

Относительные даты через strtotime

Пример
echo date('Y-m-d', strtotime('last Sunday'));
echo date('Y-m-d', strtotime('first day of next month'));

Результат (для 23.02.2025):

2025-02-23 (воскресенье)
2025-03-01

Сравнение двух дат по timestamp

Пример
$timestamp1 = strtotime('2025-01-01');
$timestamp2 = strtotime('2024-12-31');
if ($timestamp1 > $timestamp2) {
    echo 'Первая дата позже';
} else {
    echo 'Первая дата раньше или равна';
}

Результат:

Первая дата позже

Форматирование с локализацией через IntlDateFormatter

Пример
$fmt = new IntlDateFormatter('ru_RU', IntlDateFormatter::FULL, IntlDateFormatter::SHORT);
echo $fmt->format(time());

Результат:

воскресенье, 23 февраля 2025 г. 14:30

Микросекунды в дате

Пример
echo date('Y-m-d H:i:s.u'); // u - микросекунды

Результат:

2025-02-23 14:30:00.123456

Примечание: микросекунды могут быть нулевыми на многих системах.

Работа с DateTime и DateInterval

Пример
$date = new DateTime('2025-01-15');
$interval = new DateInterval('P1M');
$date->add($interval);
echo $date->format('Y-m-d');

Результат:

2025-02-15

Формат ISO 8601

Пример
echo date(DATE_ISO8601); // предопределенная константа

Результат:

2025-02-23T14:30:00+0300

Создание даты из строки с проверкой

Пример
$date = date_create_from_format('d.m.Y', '25.12.2023');
if ($date) {
    echo $date->format('Y-m-d');
} else {
    echo 'Неверный формат';
}

Результат:

2023-12-25

Функция date() в PHP - comments

En
функция дата php (php)