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()
дозволяє передавати другий параметр для встановлення дня місяця. Це може бути корисно, коли ви хочете одночасно змінити місяць і день.
Нотатка: | Важливо пам'ятати, що місяці в Приклад:
|
Нотатка: | Коли ви використовуєте Приклад:
|
Нотатка: | Якщо передати значення місяця, що виходить за рамки 0-11, дата буде автоматично адаптована. Це може виявитися корисним у деяких сценаріях. Приклад:
|
Синтаксис
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 року"