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
- Порада
-
Пам'ятайте, що методи об'єкта
автор: BondDateв JavaScript працюють з місцевим часовим поясом. Якщо ви працюєте з датами в різних часових поясах, розгляньте використання бібліотеки, такої як moment-timezone, для керування часовими поясами. - Порада
-
Якщо вам потрібно внести зміни до дати, але при цьому зберегти оригінальний об'єкт
Date, завжди працюйте з його копією. Так ви уникнете непотрібних мутацій даних.Приклад:
автор: Bondlet originalDate = new Date(2023, 5, 10); let modifiedDate = new Date(originalDate); modifiedDate.setDate(15); - Порада
-
Важливо розуміти, що навіть якщо метод
Date.prototype.setDate()приймає значення поза діапазоном (наприклад, 0 або 32+ для більшості місяців), він все одно обробить це значення. Але для уникнення неочікуваних результатів завжди перевіряйте діапазон введення.Приклад:
автор: Bondlet date = new Date(2023, 6, 15); if(value >= 1 && value <= 31) { date.setDate(value); } else { console.warn('Недопустиме значення для дня місяця!'); } - Порада
-
Хоча "перекочування" дати може здаватися помилкою (наприклад, встановлення 32 як дня місяця для липня), це може бути корисним для додавання або віднімання днів від дати. Замість використання бібліотеки або складних обчислень, просто використовуйте
Date.prototype.setDate().Приклад:
автор: Bondlet date = new Date(2023, 6, 31); date.setDate(date.getDate() + 3); console.log(date); // 3 серпня 2023 року
Синтаксис
setDate(dateValue)
Параметри
dateValue-
Це ціле число, яке представляє день місяця для вказаної дати від 1 до 31. Якщо число виходить за рамки цього діапазону, JavaScript автоматично коригує місяць та рік. Наприклад, якщо для лютого вказано число 30, то дата автоматично стане 2 березня (або 1 березня, якщо рік високосний).
автор: Bond
Повернення
timestamp-
Метод модифікує об'єкт
автор: BondDate"на місці" і повертає його новийtimestamp. Якщо значенняdateValueдорівнюєNaN(або іншим значенням, які конвертуються уNaN, таким якundefined), дата встановлюється як "Invalid Date", і метод повертаєNaN.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 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)"
Цей приклад демонструє використання методу setDate() для встановлення конкретного дня місяця. Користувач може вибрати число від 1 до 31 через елемент введення (input), натиснути на кнопку, і побачити результат відображеного дня місяця у поточному місяці та році.
Тут ми створюємо дату 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)"
Коментарі
Коментарів ще немає — будьте першим!