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 корректно обрабатывают отрицательные значения и значения за пределами обычного диапазона, автоматически корректируя дату.
Расширенные примеры
Корректировка даты при выходе за пределы диапазона:
const date = new Date(2023, 0, 31); // 31 января
date.setFullYear(2023, 1); // февраль 2023
console.log(date.toDateString());Thu Mar 03 2023
Работа с историческими датами:
const date = new Date();
date.setFullYear(1492, 9, 12);
console.log(date.toDateString());Mon Oct 12 1492
Пакетное изменение нескольких дат:
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']
Создание даты с проверкой корректности:
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