Avatar ·

Как получить текущую дату и время в PHP? Пошаговое руководство с примерами

Всем привет! Я только начал изучать PHP и столкнулся с задачей: нужно вывести на странице текущую дату и время. Перерыл кучу форумов, но везде пишут какие-то сложные вещи про таймзоны и форматы. Я попробовал просто написать:

echo date();

Но выдаёт ошибку. Потом прочитал, что нужно передавать параметр, попробовал так:

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

Это вроде работает, но я не уверен, что это правильно. Подскажите, как вообще правильно получать дату и время в PHP? Как настроить часовой пояс, чтобы было московское время? И можно ли как-то получить дату в удобном для пользователя формате, например "15 марта 2024 года, 14:30"? Буду благодарен за подробное объяснение для новичков.

Ещё вопрос: если я хочу сохранить текущую дату в базу данных MySQL, в каком формате её лучше передавать? Заранее спасибо!

<<>>

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

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

1. Базовая установка часового пояса

Перед использованием date() обязательно нужно задать часовой пояс. Иначе время будет отображаться по умолчанию (обычно UTC).

// Устанавливаем московское время (UTC+3)
date_default_timezone_set('Europe/Moscow');

// Теперь все функции даты будут использовать этот часовой пояс
echo date('Y-m-d H:i:s'); // 2024-03-15 14:30:45

2. Основные форматы date()

  • d — день месяца (01–31)
  • m — месяц (01–12)
  • Y — год (4 цифры)
  • H — часы (00–23)
  • i — минуты (00–59)
  • s — секунды (00–59)

3. Человеческий формат даты

Чтобы вывести дату как "15 марта 2024 года, 14:30", используйте комбинацию форматов и массив с названиями месяцев:

date_default_timezone_set('Europe/Moscow');

$months = [
    1 => 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня',
    'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'
];

$day = date('d');
$month = $months[(int)date('n')];
$year = date('Y');
$time = date('H:i');

echo "{$day} {$month} {$year} года, {$time}";
// Результат: 15 марта 2024 года, 14:30

4. Сохранение в базу данных MySQL

MySQL ожидает дату в формате YYYY-MM-DD HH:MM:SS. Это как раз то, что выдаёт date('Y-m-d H:i:s'):

$currentDateTime = date('Y-m-d H:i:s');
$sql = "INSERT INTO posts (created_at) VALUES ('$currentDateTime')";
// В реальном проекте используйте подготовленные запросы!

5. Альтернатива: объект DateTime

Для более сложных операций (сложение/вычитание дат, сравнение) используйте класс DateTime:

date_default_timezone_set('Europe/Moscow');

$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // 2024-03-15 14:30:45

// Можно менять дату
$now->modify('+1 day');
echo $now->format('d.m.Y'); // 16.03.2024

Важные советы:

  • Всегда устанавливайте часовой пояс в начале скрипта или в конфигурационном файле.
  • Для хранения дат в БД используйте тип DATETIME или TIMESTAMP.
  • Функция time() возвращает Unix-метку (количество секунд с 1 января 1970 года).

Теперь вы знаете всё необходимое для работы с датами в PHP!

<<>>

Использование Carbon для работы с датами (рекомендуется для Laravel)

Если вы работаете с фреймворком Laravel или просто хотите более удобный синтаксис, используйте библиотеку Carbon. Она расширяет класс DateTime и добавляет множество полезных методов.

Установка через Composer:

composer require nesbot/carbon

Примеры использования:

use Carbon\Carbon;

// Текущая дата и время
$now = Carbon::now('Europe/Moscow');
echo $now->toDateTimeString(); // 2024-03-15 14:30:45

// Человеческий формат
echo $now->isoFormat('DD MMMM YYYY года, HH:mm');
// 15 марта 2024 года, 14:30

// Относительное время
echo $now->diffForHumans(); // "только что"
echo $now->subDay()->diffForHumans(); // "1 день назад"

// Сохранение в БД
$sql = "INSERT INTO posts (created_at) VALUES ('{$now}')";

Carbon автоматически подхватывает локаль (язык) для названий месяцев. Для русского языка установите setlocale(LC_TIME, 'ru_RU.UTF-8') перед использованием.

Этот подход особенно удобен в больших проектах, где нужно часто манипулировать датами — прибавлять дни, сравнивать, выводить в разных форматах. Carbon делает код чище и читаемее.