JS метод Date.setUTCMonth()
Загальний опис
Метод Date.prototype.setUTCMonth()
призначений для встановлення місяця дати, використовуючи Універсальний координований час (UTC). Цей метод важливий для роботи з датами, коли необхідно враховувати часові пояси.
Метод Date.prototype.setUTCMonth()
дозволяє змінити тільки місяць об’єкта дати, не використовуючи інші компоненти дати. Використовується в основному тоді, коли потрібно коригувати місяць на основі UTC, зберігаючи при цьому всі інші значення часу і дати незмінними. Зокрема корисний в сферах, де важлива точність та синхронізація часу.
Date.prototype.setUTCMonth()
приймає два аргументи: значення місяця, яке має бути встановлено, та необов’язкове значення дня місяця. Місяці в JavaScript рахуються від 0 (січень) до 11 (грудень), отже передавання 1 встановить місяць на лютий. Якщо ви передасте число більше 11, метод автоматично коригує рік.
Ось простий приклад:
let date = new Date('2023-09-24T12:00:00Z'); // UTC час
date.setUTCMonth(0); // встановлює місяць на січень
console.log(date.toISOString()); // виводить 2023-01-24T12:00:00.000Z
Цей метод, хоч і простий, вимагає обережного використання, особливо якщо передається другий аргумент, який вказує день місяця. Наприклад, якщо дата – 31 березня, а ви встановлюєте місяць на лютий (який має максимум 29 днів), результат буде 2 березня наступного року, адже метод спробує врахувати зайві дні.
Приклад:
let date = new Date('2023-03-31T12:00:00Z'); // 31 березня 2023, UTC час
date.setUTCMonth(1); // встановлює місяць на лютий
console.log(date.toISOString()); // виводить 2023-03-03T12:00:00.000Z, а не 2023-02-28T12:00:00.000Z!
Нотатка: | При встановленні місяця за допомогою |
Порада: | Досвідчені розробники повинні завжди проводити тестування своїх застосунків у різних часових поясах, коли використовують методи, пов’язані з UTC, такі як |
Порада: | Якщо ви прагнете написати код, що легко читається та підтримується, завжди додавайте коментарі до викликів методу |
Синтаксис
setUTCMonth(monthValue)
setUTCMonth(monthValue, dateValue)
Параметри
- *
monthValue
Ціле число, що представляє місяць: 0 для січня, 1 для лютого і так далі.
dateValue
Ціле число від 1 до 31, що представляє день місяця.
Return
timestamp
Модифікує об'єкт
Date
і повертає новийtimestamp
. Якщо параметр єNaN
(або інші значення, які конвертуються вNaN
, наприклад,undefined
), то дата встановлюється як "Invalid Date", і повертаєтьсяNaN
.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
4 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад демонструє використання методу Date.prototype.setUTCMonth()
. Користувач може вводити номер місяця (від 0 до 11) у поле для введення та натискати кнопку, щоб змінити місяць в об'єкті дати. Результат буде відображено на сторінці.
У цьому прикладі ми створюємо новий об'єкт дати, currentDate
, і встановлюємо його на 31 грудня 2023 року. Потім ми виводимо поточний місяць та рік. За допомогою методу Date.prototype.setUTCMonth
ми змінюємо місяць на березень (2, оскільки місяці рахуються від 0). На завершення, ми виводимо змінену дату.
// Створення нового об'єкта дати.
let currentDate = new Date('2023-12-31T12:00:00Z');
// Виводимо поточний місяць та рік
console.log(`Поточна дата: ${currentDate.getUTCMonth() + 1}-${currentDate.getUTCFullYear()}`);
// Використовуємо setUTCMonth для встановлення місяця на березень (2, оскільки місяці рахуються від 0).
currentDate.setUTCMonth(2);
// Виводимо змінену дату
console.log(`Змінена дата: ${currentDate.getUTCMonth() + 1}-${currentDate.getUTCFullYear()}`);
У цьому прикладі, ми спочатку створюємо новий об'єкт дати, leapYearDate
, який вказує на 29 лютого 2024 року (високосний рік). Ми виводимо початкову дату, потім використовуємо метод Date.prototype.setUTCMonth
для встановлення місяця на лютий та дня місяця на 29 наступного року (не високосний рік). Оскільки наступний рік не є високосним, дата автоматично корегується на 1 березня. Після всіх змін ми виводимо змінену дату.
// Створення нового об'єкта дати
let leapYearDate = new Date('2024-02-29T12:00:00Z');
// Виводимо початкову дату
console.log(`Початкова дата: ${leapYearDate.getUTCDate()}-${leapYearDate.getUTCMonth() + 1}-${leapYearDate.getUTCFullYear()}`);
// Використовуємо setUTCMonth для встановлення місяця на лютий наступного року (не високосний рік).
leapYearDate.setUTCMonth(1, 29);
leapYearDate.setUTCFullYear(leapYearDate.getUTCFullYear() + 1);
// Виводимо змінену дату
console.log(`Змінена дата: ${leapYearDate.getUTCDate()}-${leapYearDate.getUTCMonth() + 1}-${leapYearDate.getUTCFullYear()}`);