JS метод Date.setDate()


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

Date.prototype.setDate() – це метод, вбудований в прототип об'єкта Date. Його основне призначення - це зміна дня місяця для конкретного об'єкта дати. Дуже корисно, коли потрібно внести корективи в існуючий об'єкт дати без створення нового.

Уявімо, що ви розробляєте календарний застосунок або планувальник завдань, де користувачу часто потрібно вибирати або змінювати дати. Date.prototype.setDate() допоможе вам легко адаптувати існуючу дату до нової, не втрачаючи при цьому іншої інформації про час, місяць чи рік.

Приклад:

let birthday = new Date(1995, 4, 16); // 16 травня 1995 року
console.log(birthday); 
birthday.setDate(20); 
console.log(birthday); 

Вище ми створили дату, а потім змінили день місяця на 20. Це простий приклад того, як можна маніпулювати днями.

Date.prototype.setDate() приймає один аргумент - число від 1 до 31, але реакція на значення поза цим діапазоном може бути неочікуваною. Наприклад, якщо ви передасте 0, це перенесе дату на останній день попереднього місяця. При передачі числа, що перевищує кількість днів у місяці, дата "перекочує" на наступний місяць. Наприклад, для травня, якщо ви встановите дату як 32, це автоматично стане 1 червня.

Приклад:

let exampleDate = new Date(2023, 3, 25); // 25 квітня 2023 року
exampleDate.setDate(32); 
console.log(exampleDate); // 2 травня 2023 року
автор: Bond

Порада

Пам'ятайте, що методи об'єкта Date в JavaScript працюють з місцевим часовим поясом. Якщо ви працюєте з датами в різних часових поясах, розгляньте використання бібліотеки, такої як moment-timezone, для керування часовими поясами.

автор: Bond
Порада

Якщо вам потрібно внести зміни до дати, але при цьому зберегти оригінальний об'єкт Date, завжди працюйте з його копією. Так ви уникнете непотрібних мутацій даних.

Приклад:

let originalDate = new Date(2023, 5, 10);
let modifiedDate = new Date(originalDate);
modifiedDate.setDate(15);
автор: Bond
Порада

Важливо розуміти, що навіть якщо метод Date.prototype.setDate() приймає значення поза діапазоном (наприклад, 0 або 32+ для більшості місяців), він все одно обробить це значення. Але для уникнення неочікуваних результатів завжди перевіряйте діапазон введення.

Приклад:

let date = new Date(2023, 6, 15); 
if(value >= 1 && value <= 31) {
    date.setDate(value);
} else {
    console.warn('Недопустиме значення для дня місяця!');
}
автор: Bond
Порада

Хоча "перекочування" дати може здаватися помилкою (наприклад, встановлення 32 як дня місяця для липня), це може бути корисним для додавання або віднімання днів від дати. Замість використання бібліотеки або складних обчислень, просто використовуйте Date.prototype.setDate().

Приклад:

let date = new Date(2023, 6, 31);
date.setDate(date.getDate() + 3);
console.log(date); // 3 серпня 2023 року
автор: Bond

Синтаксис

setDate(dateValue)

Параметри

dateValue

Це ціле число, яке представляє день місяця для вказаної дати від 1 до 31. Якщо число виходить за рамки цього діапазону, JavaScript автоматично коригує місяць та рік. Наприклад, якщо для лютого вказано число 30, то дата автоматично стане 2 березня (або 1 березня, якщо рік високосний).

автор: Bond

Повернення

timestamp

Метод модифікує об'єкт Date "на місці" і повертає його новий timestamp. Якщо значення dateValue дорівнює 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 року. Щоб визначити останній день лютого, ми спочатку встановлюємо дату на перший день наступного місяця з допомогою setMonth(). Потім, використовуючи метод setDate(), ми встановлюємо дату на 0, що автоматично "зсовує" її назад на останній день попереднього місяця - у нашому випадку це 28 лютого 2023 року.

// Створюємо дату для 15 лютого 2023 року
let date = new Date(2023, 1, 15);

// Встановлюємо дату на перший день наступного місяця
date.setMonth(date.getMonth() + 1);
date.setDate(0);

console.log(date); // Виводимо: "Thu Feb 28 2023 00:00:00 GMT+0200 (Eastern European Standard Time)"
автор: Bond

Цей приклад демонструє використання методу setDate() для встановлення конкретного дня місяця. Користувач може вибрати число від 1 до 31 через елемент введення (input), натиснути на кнопку, і побачити результат відображеного дня місяця у поточному місяці та році.

автор: Bond

Тут ми створюємо дату 25 грудня 2023 року. Щоб додати 7 днів до цієї дати, ми використовуємо комбінацію методів getDate() і setDate(). Спершу ми отримуємо поточний день місяця з getDate(), додаємо до нього 7 і встановлюємо нову дату за допомогою setDate(). Цей підхід автоматично враховує переходи між місяцями і роками, тому результатом є 1 січня 2024 року.

// Створюємо дату для 25 грудня 2023 року
let christmas = new Date(2023, 11, 25);

// Додаємо до дати 7 днів
christmas.setDate(christmas.getDate() + 7);

console.log(christmas); // Виводимо: "Mon Jan 01 2024 00:00:00 GMT+0200 (Eastern European Standard Time)"
автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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