Как получить текущий год в PHP: исчерпывающее руководство с примерами

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: почему вопрос «Как получить текущий год в PHP?» так популярен?

Казалось бы, что может быть проще? Взять и вывести текущий год. Но на Stack Overflow этот вопрос набрал сотни тысяч просмотров. Почему? Потому что за кажущейся простотой скрываются десятки нюансов: от различий между серверным временем и часовым поясом пользователя до правильного форматирования для разных локалей.

В этой статье мы разберем как получить текущий год в PHP всеми возможными способами, научимся избегать типичных ошибок и поймем, какой метод выбрать для вашей конкретной задачи. Независимо от того, пишете ли вы копирайт в футере сайта или сложную систему учета времени — этот материал будет полезен.

Поехали!

Способ №1: Классическая функция date()

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

<?php
// Получаем текущий год (4 цифры)
$year = date('Y');
echo "Сейчас $year год"; // Выведет: Сейчас 2026 год
?>

Что здесь происходит? Символ Y — это формат, который означает «год в 4-значном формате». Если вам нужен год в виде двух последних цифр (24, 25, 26), используйте y:

<?php
echo date('y'); // 26
?>

Почему date('Y') — это хорошо?

  • Простота: одна строка кода — и готово.
  • Гибкость: можно комбинировать с другими форматами: date('Y-m-d') — дата, date('Y-m-d H:i:s') — дата со временем.
  • Скорость: функция работает очень быстро, не требует создания объектов.

Когда стоит быть осторожным?

Функция date() использует часовой пояс, установленный в настройках PHP (директива date.timezone в php.ini). Если на сервере стоит неправильный часовой пояс, получение текущего года в PHP может дать неверный результат в новогоднюю ночь.

Решение: всегда устанавливайте часовой пояс в начале скрипта:

<?php
date_default_timezone_set('Europe/Moscow');
echo date('Y'); // Теперь точно 2026
?>

Способ №2: Объектно-ориентированный подход — класс DateTime

Если вы пишете современный код на PHP (версии 5.2+), лучше использовать класс DateTime. Это более мощный и гибкий инструмент для работы с датами.

<?php
$now = new DateTime();
$year = $now->format('Y');
echo "Текущий год: $year";
?>

Преимущества DateTime:

  • Объектная модель: можно легко манипулировать датами (добавлять дни, месяцы, сравнивать).
  • Четкое управление часовым поясом: передайте временную зону в конструктор.
  • Интернационализация: легко локализовать даты.

Пример с часовым поясом:

<?php
$timezone = new DateTimeZone('Europe/London');
$now = new DateTime('now', $timezone);
echo $now->format('Y'); // Год по Гринвичу
?>

Способ №3: Использование функции strftime() (устаревший, но всё ещё жив)

Функция strftime() когда-то была стандартом для локализованного вывода дат. С PHP 8.1 она объявлена устаревшей, но на старых проектах вы можете её встретить.

<?php
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%Y'); // 2026
?>

Важно: не используйте strftime() в новых проектах. Вместо этого применяйте IntlDateFormatter для локализации.

Способ №4: Как получить год из произвольной даты?

Часто нужно не просто получить текущий год в PHP, а извлечь его из уже существующей даты (например, из базы данных).

Строковый подход (если дата в формате Y-m-d):

<?php
$dateString = '2025-12-31';
$year = substr($dateString, 0, 4);
echo $year; // 2025
?>

Объектный подход (рекомендуемый):

<?php
$date = new DateTime('2025-12-31');
echo $date->format('Y'); // 2025
?>

Используйте DateTime — он корректно обработает любой строковый формат даты, который понимает PHP (ISO 8601, американский, европейский и т.д.).

Частые ошибки при получении года в PHP

Даже такая простая операция, как получение текущего года в PHP, таит в себе подводные камни. Вот топ-3 ошибки новичков:

Ошибка 1: Путаница между Y и y

Используете y вместо Y? Получите 26 вместо 2026. В большинстве случаев нужен 4-значный формат.

Ошибка 2: Игнорирование часового пояса

Сервер может быть настроен на UTC, а вы находитесь во Владивостоке. В момент, когда у вас уже наступил новый год, сервер всё ещё показывает прошлый год. Всегда устанавливайте часовой пояс!

Ошибка 3: Использование date() без проверки локали

Функция date() возвращает английские названия. Если вам нужно вывести «2026 год» по-русски, придется использовать IntlDateFormatter или ручную подстановку.

Какой способ выбрать для вашего проекта?

Давайте подведем итоги и составим шпаргалку:

Ситуация Рекомендуемый метод Пример
Просто вывести год в футере сайта date('Y') echo date('Y');
Нужно работать с датами (сравнивать, изменять) DateTime $dt = new DateTime(); echo $dt->format('Y');
Дата приходит из базы данных DateTime <

Блоги

Рекомендаций по книгам