Год в копирайте подвала («© 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 года)» и «Счётчик обратного отсчёта в списке новостей».