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 (грудень). Це може призвести до плутанини, коли ви сподіваєтеся побачити результат для "березня", але в результаті отримуєте "лютий".Приклад:
автор: Bondlet date = new Date(2023, 2); // Маєте на увазі "березень", але передаєте 2 як індекс console.log(date.getMonth()); // Поверне 2, що відповідає березню - Нотатка
-
Коли ви використовуєте
Date.prototype.setMonth()і передаєте день, який не існує в цьому місяці (наприклад, 31 квітня), JavaScript автоматично коректує цю дату. Це може призвести до неочікуваних результатів, особливо при роботі з обчисленнями дат.Приклад:
автор: Bondlet trickyDate = new Date(2023, 2, 31); trickyDate.setMonth(3); // Встановлюємо квітень console.log(trickyDate); // Поверне "1 травня 2023 року" - Нотатка
-
Якщо передати значення місяця, що виходить за рамки 0-11, дата буде автоматично адаптована. Це може виявитися корисним у деяких сценаріях.
Приклад:
автор: Bondlet dateOverflow = new Date(2023, 5, 15); dateOverflow.setMonth(12); // Спроба встановити грудень console.log(dateOverflow); // Поверне "15 січня 2024 року"
Синтаксис
setMonth(monthValue)
setMonth(monthValue, dateValue)
Параметри
monthValue-
Ціле число, що представляє місяць: 0 для січня, 1 для лютого тощо.
автор: Bond dateValue-
Ціле число від 1 до 31, яке представляє день місяця.
автор: Bond
Повернення
timestamp-
Метод змінює об'єкт Date безпосередньо, повертаючи його новий штамп часу (
автор: Bondtimestamp). Якщо параметр дорівнюєNaN(або іншим значенням, які конвертуються вNaN, таким якundefined), дата встановлюється як "Invalid Date", а метод повертаєNaN.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми створюємо дату "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 року"
Цей приклад демонструє використання методу setMonth() для зміни місяця в об'єкті Date. Користувач може обрати місяць зі списку і побачити, як змінюється дата після натискання на кнопку "Змінити місяць".
У цьому прикладі ми створюємо дату для "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 року"
Коментарі
Коментарів ще немає — будьте першим!