Перейти к содержанию
Инструкция

Вывод текущего года на PHP (копирайт в подвале)

Как автоматически выводить в подвале сайта текущий год или интервал «2022–2026», чтобы копирайт не устаревал 1 января. Разбираем date('Y'), тернарный оператор, часовой пояс и вариант для 1С-Битрикс.

Обновлено 22 июля 5 минут чтения 1 просмотр

Год в копирайте подвала («© 2026» или «© 2022–2026») – мелочь, из-за которой сайт выглядит заброшенным, если его забыли обновить 1 января. Решается это одной строкой на PHP: год всегда берётся из системного времени, а не вбивается руками.

Самый короткий вариант: date('Y')

Функция date('Y') возвращает текущий год из четырёх цифр. Для копирайта её достаточно:

<p>© <?= date('Y') ?> Название компании</p>
// © 2026 Название компании

Интервал «год создания – текущий»

Часто нужно показать диапазон: «2022–2026», но пока год создания и текущий совпадают – только одно число, без тире. Это решает тернарный оператор: сравниваем базовый год с текущим и выбираем формат вывода.

<?php
$startYear = 2022;
$currentYear = (int) date('Y');

echo $startYear === $currentYear
    ? $startYear
    : $startYear . '–' . $currentYear;
// в 2022-м выведет «2022», с 2023-го – «2022–2026»
?>

Обратите внимание на два момента. Во-первых, date('Y') возвращает строку – при сравнении её стоит привести к целому через (int), чтобы сравнение было строгим (===). Во-вторых, между годами лучше ставить типографское тире «–» (en dash), а не дефис «-» – это правильный знак диапазона.

Выносим в функцию, если год нужен в нескольких местах

Если копирайт повторяется (подвал, страница «О компании», письма), логику удобно завернуть в маленькую функцию – чтобы менять год основания в одном месте:

function copyrightYears(int $startYear): string
{
    $current = (int) date('Y');
    return $startYear === $current ? (string) $startYear : "$startYear–$current";
}

echo copyrightYears(2022); // 2022–2026

Важно: часовой пояс сервера

Главный подвох – date() берёт год по часовому поясу PHP, а не по времени вашего города. Если пояс сервера настроен неверно, 31 декабря поздним вечером сайт может уже (или ещё) показать не тот год. Задать пояс явно можно двумя способами:

  • Глобально в php.ini: date.timezone = Europe/Moscow.
  • В коде – через date_default_timezone_set('Europe/Moscow') либо объектно, что нагляднее и не трогает глобальное состояние:
$now = new DateTime('now', new DateTimeZone('Europe/Moscow'));
echo $now->format('Y'); // 2026

Вариант для 1С-Битрикс

На сайте под Битриксом можно оставить чистый date('Y') – он работает в любом шаблоне. Если хочется единообразия с остальным кодом ядра, тот же год отдаёт и FormatDate('Y') без аргументов (текущее время в часовом поясе сайта). Функциональной разницы для копирайта нет, выбирайте по стилю проекта.

Подводные камни

  • Кэш подвала. Если подвал закэширован (например, включён HTML-кэш или кэш шаблона), год «застынет» до сброса кэша. 1 января проверьте, что кэш обновился, – обычно достаточно сброса по расписанию.
  • Не хардкодьте текущий год. Смысл приёма именно в том, чтобы не писать «2026» руками. Хардкод остаётся только у года основания.
  • Тире, а не дефис. Для диапазона лет типографически верен знак «–» (en dash), а перечисление через дефис выглядит как ошибка.

Смежные приёмы работы с датами – в гайдах «Сменить формат даты в CMS Битрикс», «Формат Ydiff (например, 2 года)» и «Счётчик обратного отсчёта в списке новостей».

Частые вопросы

Как вывести текущий год на PHP?

Используйте date('Y') – функция возвращает текущий год из четырёх цифр по часовому поясу PHP. В шаблоне: .

Как показать интервал «год создания – текущий год»?

Сравните базовый год с текущим тернарным оператором: echo $start === (int) date('Y') ? $start : $start.'–'.date('Y'). Пока годы совпадают, выводится одно число, потом – диапазон.

Почему в новогоднюю ночь показывается неправильный год?

date() берёт время по часовому поясу PHP. Если пояс сервера отличается от вашего, год может смениться раньше или позже. Задайте пояс в php.ini (date.timezone) или через DateTimeZone('Europe/Moscow').

Чем date('Y') отличается от FormatDate('Y') в Битрикс?

Для вывода текущего года они равнозначны. date('Y') – чистый PHP по часовому поясу PHP, FormatDate('Y') – функция ядра Битрикса, работающая в часовом поясе сайта. Выбирайте по стилю проекта.

Почему год не меняется после Нового года?

Скорее всего подвал закэширован (HTML-кэш или кэш шаблона), и значение застыло. Дождитесь сброса кэша по расписанию или очистите его вручную.

Валентина Меланина

Хотите обсудить свой проект?

Помогу с разработкой, аналитикой и AI-видимостью вашего сайта

Если у вас есть задача — от внедрения разметки и аналитики до полной переработки сайта — напишите, обсудим объём и подход.