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() дозволяє передавати другий параметр для встановлення дня місяця. Це може бути корисно, коли ви хочете одночасно змінити місяць і день.

автор: Bond

Нотатка

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

Приклад:

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

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

Приклад:

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

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

Приклад:

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

Синтаксис

setMonth(monthValue)
setMonth(monthValue, dateValue)

Параметри

monthValue

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

автор: Bond

dateValue

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

автор: Bond

Повернення

timestamp

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

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 3 12 3
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
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 року"
автор: Bond

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

автор: Bond

У цьому прикладі ми створюємо дату для "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 року"
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід