SetFullYear: примеры (JAVASCRIPT)

Работа с методом setFullYear в JavaScript: полное руководство
Раздел: Дата и время, Методы
setFullYear(yearValue: Number, [monthValue, dayValue]: Number): Number (milliseconds)

Описание метода setFullYear

Метод setFullYear() устанавливает полный год для указанной даты согласно местному времени. Принадлежит объекту Date в JavaScript и позволяет изменять год, месяц и день даты.

Используется когда требуется модифицировать год в существующем объекте Date, например, при расчете дат в календарных приложениях, обработке временных меток или валидации введенных пользователем дат.

Аргументы метода

  • yearValue - целое число, представляющее год (например, 2023). Обязательный параметр.
  • monthValue - необязательный параметр. Целое число от 0 до 11, представляющее месяц (0 - январь, 11 - декабрь).
  • dayValue - необязательный параметр. Целое число от 1 до 31, представляющее день месяца.

Возвращаемое значение

Метод возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC до установленной даты (timestamp). При этом изменяет исходный объект Date.

Базовые примеры использования

Установка года без изменения месяца и дня:

const date = new Date('2023-03-15');
date.setFullYear(2025);
console.log(date.toString());
Sat Mar 15 2025 03:00:00 GMT+0300 (Москва, стандартное время)

Установка года и месяца:

const date = new Date('2023-03-15');
date.setFullYear(2024, 7); // август (месяц 7)
console.log(date.toDateString());
Thu Aug 15 2024

Установка года, месяца и дня:

const date = new Date();
date.setFullYear(2023, 11, 31);
console.log(date.toLocaleDateString('ru-RU'));
31.12.2023

Похожие методы в JavaScript

setYear() - устаревший метод, устанавливает год относительно 1900 года. Не рекомендуется к использованию.

setUTCFullYear() - устанавливает год по UTC, а не по местному времени. Используется когда нужна независимость от временных зон.

setMonth() - устанавливает только месяц (0-11). Принимает также день месяца как необязательный параметр.

setDate() - устанавливает день месяца (1-31). Для изменения только дня предпочтительнее чем setFullYear.

Типичные ошибки

Передача некорректных значений месяца:

const date = new Date('2023-03-15');
date.setFullYear(2023, 12); // месяц 12 (январь следующего года)
console.log(date.toDateString());
Mon Jan 15 2024

Игнорирование возвращаемого значения:

const date = new Date();
const timestamp = date.setFullYear(2025);
console.log(date.toString() === new Date(timestamp).toString());
true

Работа с високосными годами:

const date = new Date('2024-02-29');
date.setFullYear(2023); // 2023 не високосный
console.log(date.toDateString());
Wed Mar 01 2023

Изменения в последних версиях

Метод setFullYear() не претерпел значительных изменений в последних версиях ECMAScript. Основное поведение остается стабильным с ES3 (1999 год).

В ECMAScript 2015 (ES6) был стандартизирован параметр dayValue, который ранее поддерживался браузерами, но не был в спецификации.

Современные движки JavaScript корректно обрабатывают отрицательные значения и значения за пределами обычного диапазона, автоматически корректируя дату.

Расширенные примеры

Корректировка даты при выходе за пределы диапазона:

Пример javascript
const date = new Date(2023, 0, 31); // 31 января
date.setFullYear(2023, 1); // февраль 2023
console.log(date.toDateString());
Thu Mar 03 2023

Работа с историческими датами:

Пример javascript
const date = new Date();
date.setFullYear(1492, 9, 12);
console.log(date.toDateString());
Mon Oct 12 1492

Пакетное изменение нескольких дат:

Пример javascript
const dates = [
  new Date('2023-01-15'),
  new Date('2023-06-20'),
  new Date('2023-12-05')
];

dates.forEach(date => {
  date.setFullYear(date.getFullYear() + 1);
});

console.log(dates.map(d => d.toDateString()));
['Mon Jan 15 2024', 'Thu Jun 20 2024', 'Thu Dec 05 2024']

Создание даты с проверкой корректности:

Пример javascript
function createDate(year, month, day) {
  const date = new Date();
  date.setFullYear(year, month, day);
  
  // Проверка, что дата установлена корректно
  if (date.getFullYear() === year && 
      date.getMonth() === month && 
      date.getDate() === day) {
    return date;
  }
  return null;
}

console.log(createDate(2023, 1, 31)); // 31 февраля
console.log(createDate(2023, 2, 28));
null
Tue Feb 28 2023 00:00:00 GMT+0300 (Москва, стандартное время)

Аналоги в других языках программирования

PHP: метод setDate() объекта DateTime

$date = new DateTime('2023-03-15');
$date->setDate(2025, 3, 15);
echo $date->format('Y-m-d');
2025-03-15

Python: метод replace() объекта datetime

from datetime import datetime
date = datetime(2023, 3, 15)
new_date = date.replace(year=2025)
print(new_date)
2025-03-15 00:00:00

MySQL: функция DATE_ADD() или INTERVAL

SELECT DATE_ADD('2023-03-15', INTERVAL 2 YEAR);
2025-03-15

JS setFullYear function comments

En
SetFullYear Sets the full year for a specified date