Как отображать временные метки средствами PHP

Раздел: Встроенные функции PHP -> Функции даты и времени

Основные способы вывода даты и времени в PHP

Наиболее эффективный и универсальный способ вывести текущую дату и время - использовать функцию date() вместе с предварительной установкой часового пояса с помощью date_default_timezone_set(). Этот подход подходит для большинства задач, требует минимум кода и работает во всех версиях PHP.


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

Php вывести время (вывести дату и время в php)

Результат выполнения (зависит от текущего времени):

2025-04-02 15:30:00

Пояснение: Строка формата 'Y-m-d H:i:s' выводит год (4 цифры), месяц, день, часы (в 24-часовом формате), минуты и секунды. Установка часового пояса гарантирует корректное время для выбранного региона.

Типичные ошибки:

  • Забыть установить часовой пояс - по умолчанию используется UTC, что может привести к несоответствию времени.
  • Неправильные идентификаторы часовых поясов (например, 'Moscow' вместо 'Europe/Moscow').
  • Использование устаревших форматов, таких как 'r' (RFC 2822) без локализации.

Как вывести дату и время с помощью объекта DateTime?

Класс DateTime предоставляет объектно-ориентированный интерфейс. Он удобен, когда требуется выполнять дальнейшие операции с датой.


<?php
$date = new DateTime('now', new DateTimeZone('Europe/Moscow'));
echo $date->format('Y-m-d H:i:s');
?>
  

Метод format() принимает те же символы формата, что и date().

Типичные ошибки: Исключение при неверной строке (например, '0000-00-00'), необходимо обрабатывать try/catch.

Как использовать процедурную функцию date_create() для создания даты?

Функция date_create() возвращает объект DateTime, аналогично конструктору. Подходит для кода, написанного в процедурном стиле.


<?php
$date = date_create('now', new DateTimeZone('Europe/Moscow'));
echo date_format($date, 'd.m.Y H:i');
?>
  

Как получить timestamp для произвольной даты и времени с помощью mktime()?

mktime() возвращает unix timestamp для заданных параметров (час, минута, секунда, месяц, день, год). Затем timestamp можно передать в date().


<?php
$timestamp = mktime(14, 30, 0, 4, 2, 2025);
echo date('Y-m-d H:i:s', $timestamp);
?>
  
2025-04-02 14:30:00

Удобно для генерации дат из отдельных компонентов.

Как преобразовать строку с датой в удобный формат с помощью strtotime()?

strtotime() интерпретирует текстовую строку ('next Monday', 'last day of February 2025') в unix timestamp.


<?php
$timestamp = strtotime('2025-04-02 15:30');
echo date('d.m.Y H:i', $timestamp);
?>
  

Позволяет работать с относительными датами, например: 'now', '+1 day', 'first day of next month'.

Проблемы: strtotime() может некорректно обработать нестандартные строки, лучше использовать createFromFormat() для точного разбора.

Как вывести дату и время в UTC/GMT с помощью gmdate()?

gmdate() аналогична date(), но всегда использует GMT/UTC, игнорируя установленный часовой пояс.


<?php
echo gmdate('Y-m-d H:i:s');
?>
  

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

Для локализованного вывода используют IntlDateFormatter (современный способ) или strftime() (устарел).


<?php
$fmt = new IntlDateFormatter('ru_RU', IntlDateFormatter::LONG, IntlDateFormatter::SHORT);
echo $fmt->format(new DateTime());
?>
  
2 апреля 2025 г., 15:30

Настройка локали 'ru_RU' выводит месяц в родительном падеже.

Если расширение intl не установлено, возникнет ошибка. strftime() может работать непредсказуемо на разных платформах.

Как отформатировать дату, полученную из базы данных?

Строку из БД (например, '2025-04-02 15:30:00') можно преобразовать в объект DateTime с помощью createFromFormat() и вывести в нужном формате.


<?php
$dbDate = '2025-04-02 15:30:00';
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dbDate);
echo $date->format('d.m.Y H:i');
?>
  
02.04.2025 15:30

createFromFormat() позволяет точно задать формат строки, избегая ошибок интерпретации.

Расширенные примеры работы с датой и временем

  1. Добавление интервала к дате. Пример: добавить 1 неделю и 2 дня к 2025-04-02.

    Пример
    
    <?php
    $date = new DateTime('2025-04-02');
    $interval = new DateInterval('P1W2D');
    $date->add($interval);
    echo $date->format('Y-m-d');
    ?>
    
    2025-04-11
  2. Разница между двумя датами. Сколько дней между 2025-01-01 и 2025-04-02?

    Пример
    
    <?php
    $date1 = new DateTime('2025-01-01');
    $date2 = new DateTime('2025-04-02');
    $diff = $date1->diff($date2);
    echo $diff->days . ' дней';
    ?>
    
    91 дней
  3. Проверка корректности даты пользовательского ввода. Пример с 31 февраля.

    Пример
    
    <?php
    $input = '31.02.2025';
    $date = DateTime::createFromFormat('d.m.Y', $input);
    if (!$date || $date->format('d.m.Y') !== $input) {
        echo 'Некорректная дата';
    } else {
        echo 'Дата верна: ' . $date->format('Y-m-d');
    }
    ?>
    
    Некорректная дата
  4. Вывод времени с микросекундами. Использование microtime(true).

    Пример
    
    <?php
    $micro = microtime(true);
    $seconds = floor($micro);
    $microsec = ($micro - $seconds) * 1000000;
    echo date('Y-m-d H:i:s', $seconds) . sprintf('.%06d', $microsec);
    ?>
    
    2025-04-02 15:30:00.123456
  5. Конвертация между часовыми поясами. Из America/New_York в Europe/Moscow.

    Пример
    
    <?php
    $date = new DateTime('2025-04-02 12:00:00', new DateTimeZone('America/New_York'));
    $date->setTimezone(new DateTimeZone('Europe/Moscow'));
    echo $date->format('Y-m-d H:i:s');
    ?>
    
    2025-04-02 19:00:00
  6. Использование DateTimeImmutable для неизменяемых объектов.

    Пример
    
    <?php
    $date = new DateTimeImmutable('2025-04-02');
    $newDate = $date->modify('+1 month');
    echo $newDate->format('Y-m-d') . "\\n";
    echo $date->format('Y-m-d');
    ?>
    
    2025-05-02
    2025-04-02
  7. Вывод даты в формате ISO 8601 (для JSON/JavaScript).

    Пример
    
    <?php
    echo (new DateTime())->format(DateTime::ATOM);
    ?>
    
    2025-04-02T15:30:00+03:00
  8. Локализованный вывод дня недели и месяца с помощью IntlDateFormatter.

    Пример
    
    <?php
    $fmt = new IntlDateFormatter('ru_RU', IntlDateFormatter::FULL, IntlDateFormatter::NONE);
    echo $fmt->format(new DateTime('2025-04-02'));
    ?>
    
    среда, 2 апреля 2025 г.
  9. Получение количества дней в месяце.

    Пример
    
    <?php
    $date = new DateTime('2025-02-01');
    echo $date->format('t');
    ?>
    
    28
  10. Использование устаревшей функции strftime() с setlocale (только для старых проектов).

    Пример
    
    <?php
    setlocale(LC_TIME, 'ru_RU.UTF-8');
    echo strftime('%d %B %Y года, %H:%M');
    ?>
    
    02 апреля 2025 года, 15:30

Вывести дату и время в PHP - comments

En
Php вывести время (php)