Как получить текущий год в PHP? 5 простых способов

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

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

Начать курс

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

Казалось бы, что может быть проще, чем спросить у PHP: «Эй, какой сейчас год?» — и получить ответ. Но не тут-то было! Вопрос «How do I use PHP to get the current year?» собрал на Stack Overflow десятки тысяч просмотров. Почему?

Во-первых, это одна из первых задач, с которой сталкивается новичок: вывести в подвале сайта «© 2024», сделать динамический список лет в форме регистрации или просто проверить возраст пользователя. Во-вторых, PHP предлагает несколько разных подходов, и каждый имеет свои нюансы. В-третьих (и это самое коварное), начинающие часто путают date('y') и date('Y') — и получают не 2024, а 24. А потом удивляются, почему сайт «живёт» в прошлом веке.

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

1. Самый простой способ: функция date()

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

Как получить 4-значный год (2024, 2025…)

<?php
echo date('Y'); // Выведет: 2024
?>

Символ Y (заглавная) — это полное представление года, 4 цифры. Именно его нужно использовать в 99% случаев.

Как получить 2-значный год (24, 25…)

<?php
echo date('y'); // Выведет: 24
?>

Символ y (строчная) — это год из двух цифр. Используйте его, только если вы пишете игрушечную программу или работаете с legacy-кодом (который, скорее всего, уже сломан из-за Y2K-подобных проблем).

Реальный пример: копирайт в футере

<footer>
    <p>&copy; 2010–<?php echo date('Y'); ?> Мой супер-сайт</p>
</footer>

Этот код автоматически обновит год в подвале — вам не придётся править его каждый январь. Круто, правда?

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

Если вы пишете современный PHP (7.x, 8.x), лучше использовать класс DateTime. Он более гибкий, удобный для манипуляций и легче читается.

Получаем год через DateTime

<?php
$now = new DateTime();
echo $now->format('Y'); // 2024
?>

Метод format() работает так же, как и date(), но на объекте. Преимущество — вы легко можете изменить дату, добавить дни, месяцы, а потом снова отформатировать.

Расширенный пример: год из конкретной даты

<?php
$date = new DateTime('2023-03-15');
echo $date->format('Y'); // 2023
?>

Это полезно, когда вы работаете с базой данных и храните даты в виде строк.

3. Старый добрый strftime() (но с оговоркой)

Функция strftime() — ещё один способ получить год. Она хороша тем, что учитывает локаль (язык и региональные настройки). Например, в русской локали она может вывести название месяца на русском.

Пример с strftime

<?php
setlocale(LC_TIME, 'ru_RU.utf8');
echo strftime('%Y'); // 2024
?>

Но есть важный нюанс: начиная с PHP 8.1 функция strftime() помечена как устаревшая (deprecated). Её всё ещё можно использовать, но в будущих версиях её могут удалить. Если пишете новый код — лучше используйте DateTime.

4. Переменная $_SERVER['REQUEST_TIME']

Иногда нужно получить год «на лету», без создания объектов. Для этого можно использовать суперглобальный массив $_SERVER.

<?php
echo date('Y', $_SERVER['REQUEST_TIME']); // 2024
?>

REQUEST_TIME содержит временную метку начала запроса к серверу. Это быстрее, чем time(), но разница в микросекундах обычно не критична.

5. Функция time() и работа с метками

Никто не запрещает сделать так:

<?php
$timestamp = time();
echo date('Y', $timestamp); // 2024
?>

По сути, это то же самое, что просто date('Y'), но вы явно передаёте метку. Может пригодиться, если вы сохранили метку в переменную и потом используете её несколько раз.

Сравнение способов: что выбрать?

Давайте сведём всё в таблицу (мысленно, конечно). В реальной статье мы можем оформить её как список:

  • date('Y') — самый простой и быстрый. Используйте, если вам нужен «голый» год без дополнительных манипуляций.
  • DateTime::format('Y') — лучший выбор для ООП-кода. Легко расширяется, понятен другим разработчикам.
  • strftime('%Y') — только если вы застряли на старой версии PHP и вам нужна локаль.
  • $_SERVER['REQUEST_TIME'] — микро-оптимизация для хардкорных перфекционистов.
  • time() + date() — избыточно, но работает.

Частые ошибки и как их избежать

Давайте разберём три самых популярных грабля, на которые наступают новички.

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

Самая распространённая. Вы пишете echo date('y'); и получаете 24 вместо 2024. Потом клиент говорит: «У вас в подвале сайта 1924 год выглядит подозрительно». Помните: Y — большое, год — полный.

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

PHP использует часовой пояс сервера. Если сервер стоит в Нью-Йорке, а ваш пользователь во Владивостоке, то в момент, когда у пользователя уже наступил 2025 год, сервер всё ещё покажет 2024. Решение — установить нужный часовой пояс в начале скрипта:

Блоги

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