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!
автор: Bond

Порада

Досвідчені розробники повинні завжди проводити тестування своїх застосунків у різних часових поясах, коли використовують методи, пов’язані з UTC, такі як Date.prototype.setUTCMonth(). Розглядайте варіанти використання інших UTC методів для більш точного управління датами і часом у вашому коді.

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

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

автор: Bond
Нотатка

При встановленні місяця за допомогою Date.prototype.setUTCMonth(), важливо враховувати, що не всі місяці мають однакову кількість днів, і метод може автоматично скоригувати день місяця. Зокрема, якщо встановити лютий для дати, яка має 31 день, то результатом буде 3 березня.

автор: Bond

Синтаксис

setUTCMonth(monthValue)
setUTCMonth(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
1 1 1 4 12
Підтримка: мобільні переглядачі
Переглядач 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

Приклади

+ запропонувати свій приклад у пісочниці

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

автор: Bond

У цьому прикладі ми створюємо новий об'єкт дати, 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()}`);
автор: Bond

У цьому прикладі, ми спочатку створюємо новий об'єкт дати, 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()}`);
автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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