Avatar ·

Как получить текущий год в JavaScript?

Всем привет! Я только начал изучать JavaScript и столкнулся с проблемой. Мне нужно отобразить на сайте копирайт с текущим годом, чтобы он автоматически обновлялся каждый год. Я знаю, что есть объект Date, но не могу понять, как правильно извлечь именно год. Вот что я пробовал: ```javascript let date = new Date(); let year = date.getYear(); console.log(year); // Выводит что-то странное: 124 ``` Почему я получаю 124, а не 2024? Я ожидал увидеть текущий год. Может быть, я использую неправильную функцию? В интернете видел, что кто-то использует getFullYear(), но не уверен, в чем разница. Подскажите, пожалуйста, как правильно получить текущий год в JavaScript, чтобы использовать его в подвале сайта? И заодно объясните, почему getYear() ведет себя так странно. <<>>

Правильный способ: используйте getFullYear()

Для получения текущего года в JavaScript нужно использовать метод getFullYear() объекта Date. Он возвращает четырехзначное число, представляющее год (например, 2025). Вот правильный пример:

let currentDate = new Date();
let currentYear = currentDate.getFullYear();
console.log(currentYear); // Выведет: 2025 (или текущий год)

Почему не работает getYear()?

Метод getYear() устарел (deprecated) и не рекомендуется к использованию. Он возвращает год минус 1900. То есть:

  • Для 2025 года: 2025 - 1900 = 125
  • Для 2000 года: 2000 - 1900 = 100
  • Для 1999 года: 1999 - 1900 = 99

Это поведение связано с историческими причинами (ранние версии JavaScript), но сейчас его лучше избегать. Вместо него всегда используйте getFullYear().

Пример для подвала сайта (копирайт)

Вот как можно динамически отобразить год в подвале:

// HTML: <span id="year"></span>

// JavaScript:
document.getElementById('year').textContent = new Date().getFullYear();

// Или еще проще (если используете шаблонные строки):
document.write(`© ${new Date().getFullYear()} Мой сайт. Все права защищены.`);

Дополнительные методы для работы с датой

Объект Date предоставляет и другие полезные методы:

  • getMonth() — месяц (0-11, где 0 = январь)
  • getDate() — день месяца (1-31)
  • getDay() — день недели (0-6, где 0 = воскресенье)
  • getHours(), getMinutes(), getSeconds() — время

Важно про устаревшие методы

В JavaScript есть несколько устаревших методов, которые могут сбивать с толку новичков:

  • getYear() — устарел, используйте getFullYear()
  • setYear() — устарел, используйте setFullYear()
  • toGMTString() — устарел, используйте toUTCString()

Современные редакторы кода (VS Code) и линтеры (ESLint) обычно подсвечивают устаревшие методы как предупреждение. Всегда проверяйте документацию MDN для актуальных рекомендаций.

<<>>

Альтернативный подход: использование Intl.DateTimeFormat

Если вам нужно получить год в определенном формате или локали, можно использовать объект Intl.DateTimeFormat:

let year = new Intl.DateTimeFormat('ru-RU', { year: 'numeric' }).format(new Date());
console.log(year); // "2025"

Короткий однострочник для копирайта

Самый компактный способ для подвала сайта — использовать Date().split(' ')[3], но он менее надежен:

// Быстрый, но не рекомендуется
let year = new Date().getFullYear();

// Или еще короче (но менее читаемо):
document.querySelector('footer').innerHTML += `© ${new Date().getFullYear()}`;

Совет: избегайте устаревших методов

Если вы используете TypeScript или современный JavaScript с линтером, устаревшие методы вроде getYear() будут подсвечены красным. Всегда отдавайте предпочтение getFullYear() — это стандарт ECMAScript с 1999 года.