Перейти к содержанию

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

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

5 мин 68 Обновлено 22 июля Сложность: Базовая

TL;DR

  • date('Y') возвращает текущий год из четырёх цифр – для копирайта хватает одной строки.
  • Интервал «2022–2026» собирают тернарным оператором, сравнивая базовый год с (int) date('Y').
  • Год создания хардкодят один раз, текущий – всегда из системного времени.
  • date() зависит от часового пояса PHP: задайте его через php.ini или DateTimeZone('Europe/Moscow').
  • Между годами ставят типографское тире «–», а не дефис.

Год в копирайте подвала («© 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-кэш или кэш шаблона), и значение застыло. Дождитесь сброса кэша по расписанию или очистите его вручную.

Материалы по теме

Что почитать дальше по этой теме

Инструкция Сменить формат даты в CMS «Битрикс» Как вывести поле «Начало активности» элемента инфоблока в формате «02 июня, 2016». Разбираем FormatDate с шаблоном «d F, Y», разбор строки через ParseDateTime и подводные камни с локалью и часовым поясом. 6 мин 50 18 мая 2017 Инструкция Как отформатировать дату в формате Ydiff (например, «2 года») Как вывести разницу между датой и сегодняшним днём словами – «2 года», «6 месяцев», «3 дня». Разбираем относительный формат FormatDate «Ydiff» в Битрикс, автоматическое склонение и как разбить результат на число и слово. 6 мин 54 18 июля 2019 Инструкция Счётчик обратного отсчёта в «Списке новостей» Битрикса Как вывести ближайшее мероприятие компонентом «Список новостей» и повесить на него таймер обратного отсчёта, взяв дату из свойства элемента. Дату отдаём в JS через data-атрибут, а сам счётчик пишем на чистом JavaScript без jQuery. 8 мин 44 22 октября 2017 Инструкция Скрипт обратного отсчёта времени до конца акции Как поставить на сайт таймер обратного отсчёта до конца акции на чистом JavaScript, без библиотек. Разбираем надёжный разбор даты, счёт от текущего момента, склонение единиц и остановку по нулю. 7 мин 63 18 мая 2017 Инструкция Вывод блоков только на определённых страницах сайта Как в 1С-Битрикс показать баннер, форму или блок только на нужных страницах. Разбираем API $APPLICATION->GetCurPage и GetCurDir, разницу между физическим и SEF-адресом, проверку по разделу и типичные ошибки с ЧПУ. 7 мин 58 24 октября 2018