Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS метод Date.setMonth()

Загальний опис

Date.prototype.setMonth() - це метод об'єкта Date, який дозволяє змінювати місяць конкретного екземпляра дати, при цьому зберігаючи день та час. Основний принцип роботи методу полягає в передачі індексу місяця як першого параметра (де 0 відповідає січню, 1 - лютому, і так далі до 11, що відповідає грудню). Якщо переданий індекс виходить за межі діапазону, дата автоматично коректується. Наприклад, якщо сьогодні січень, і ви встановите місяць з індексом -1, то дата зміниться на грудень попереднього року.

Розглянемо практичний приклад. Уявімо, що у вас є дата "15 лютого 2023 року" і ви хочете змінити місяць на квітень:

let exampleDate = new Date(2023, 1, 15);
exampleDate.setMonth(3);
console.log(exampleDate);

В результаті ви отримаєте "15 квітня 2023 року".

Однак тут важливо зазначити особливість. Якщо день місяця у вихідній даті виходить за межі кількості днів у новому місяці, метод автоматично коректує день. Наприклад, якщо ми взяли б "31 березня 2023 року" і спробували змінити місяць на лютий:

let trickyDate = new Date(2023, 2, 31);
trickyDate.setMonth(1);
console.log(trickyDate);

В результаті отримаємо "3 березня 2023 року", оскільки лютого 31 дня не існує.

Також метод Date.prototype.setMonth() дозволяє передавати другий параметр для встановлення дня місяця. Це може бути корисно, коли ви хочете одночасно змінити місяць і день.

Нотатка:

Важливо пам'ятати, що місяці в Date індексуються, починаючи з 0 (січень) до 11 (грудень). Це може призвести до плутанини, коли ви сподіваєтеся побачити результат для "березня", але в результаті отримуєте "лютий".

Приклад:

let date = new Date(2023, 2); // Маєте на увазі "березень", але передаєте 2 як індекс
console.log(date.getMonth()); // Поверне 2, що відповідає березню
Нотатка:

Коли ви використовуєте Date.prototype.setMonth() і передаєте день, який не існує в цьому місяці (наприклад, 31 квітня), JavaScript автоматично коректує цю дату. Це може призвести до неочікуваних результатів, особливо при роботі з обчисленнями дат.

Приклад:

let trickyDate = new Date(2023, 2, 31);
trickyDate.setMonth(3); // Встановлюємо квітень
console.log(trickyDate); // Поверне "1 травня 2023 року"
Нотатка:

Якщо передати значення місяця, що виходить за рамки 0-11, дата буде автоматично адаптована. Це може виявитися корисним у деяких сценаріях.

Приклад:

let dateOverflow = new Date(2023, 5, 15);
dateOverflow.setMonth(12); // Спроба встановити грудень
console.log(dateOverflow); // Поверне "15 січня 2024 року"

Синтаксис

setMonth(monthValue)
setMonth(monthValue, dateValue)

Параметри

*monthValue

Ціле число, що представляє місяць: 0 для січня, 1 для лютого тощо.

dateValue

Ціле число від 1 до 31, яке представляє день місяця.

Return

timestamp

Метод змінює об'єкт Date безпосередньо, повертаючи його новий штамп часу (timestamp). Якщо параметр дорівнює NaN (або іншим значенням, які конвертуються в NaN, таким як undefined), дата встановлюється як "Invalid Date", а метод повертає NaN.

Переглядачі

Переглядач

1

1

1

3

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


Цей приклад демонструє використання методу setMonth() для зміни місяця в об'єкті Date. Користувач може обрати місяць зі списку і побачити, як змінюється дата після натискання на кнопку "Змінити місяць".

У цьому прикладі ми створюємо дату "15 травня 2023 року" із допомогою конструктора Date. Після цього застосовуємо setMonth з аргументом 5 (що відповідає червню) для зміни місяця. Результат - "15 червня 2023 року".

// Створюємо новий об'єкт дати для "15 травня 2023 року"
let currentMonth = new Date(2023, 4, 15);

// Використовуємо setMonth для зміни місяця на червень (індекс 5)
currentMonth.setMonth(5);

// Виведення результату
console.log(currentMonth); // "15 червня 2023 року"

У цьому прикладі ми створюємо дату для "1 березня 2023 року". Наступною дією є зміна місяця на наступний (лютий), а потім використання автоматичної корекції дати, встановлюючи день на "0". Це призведе до того, що дата зміниться на останній день попереднього місяця. Оскільки 2023 рік не є високосним, дата автоматично коректується на "28 лютий 2023 року".

// Створюємо дату для "1 березня 2023 року"
let endOfMonth = new Date(2023, 1, 1);

// Використовуємо setMonth для зміни місяця на "лютий" та setDate для встановлення "0 дня"
// це автоматично встановить дату на останній день попереднього місяця (лютий)
endOfMonth.setMonth(2);
endOfMonth.setDate(0);

// Виведення результату
console.log(endOfMonth); // "28 лютий 2023 року"