Date.UTC() создаёт timestamp из отдельных частей даты и времени.
Если говорить просто, этот метод принимает год, месяц, день, часы и другие части даты, а затем возвращает количество миллисекунд с 1 января 1970 года 00:00:00 UTC.
Синтаксис
Базовая запись выглядит так:
Date.UTC(year, monthIndex, day, hours, minutes, seconds, milliseconds)
Где:
year- годmonthIndex- номер месяца от0до11day- день месяцаhours- часыminutes- минутыseconds- секундыmilliseconds- миллисекунды
Необязательные аргументы можно не передавать.
Если их нет, JavaScript подставит значения по умолчанию:
- месяц:
0 - день:
1 - часы:
0 - минуты:
0 - секунды:
0 - миллисекунды:
0
Что возвращает Date.UTC()
Метод возвращает число.
const timestamp = Date.UTC(2025, 0, 15);
console.log(timestamp); // 1736899200000
console.log(typeof timestamp); // "number"
Это важно: Date.UTC() возвращает не объект Date, а именно timestamp.
Простой пример
const timestamp = Date.UTC(2025, 0, 15);
console.log(timestamp); // 1736899200000
Здесь:
2025- год0- январь15- день месяца
Результат можно потом передать в new Date().
const timestamp = Date.UTC(2025, 0, 15);
const date = new Date(timestamp);
console.log(date.toISOString()); // "2025-01-15T00:00:00.000Z"
Пример со временем
Можно передать не только дату, но и время.
const timestamp = Date.UTC(2025, 0, 15, 10, 30, 0);
console.log(timestamp); // 1736937000000
console.log(new Date(timestamp).toISOString()); // "2025-01-15T10:30:00.000Z"
Такой подход особенно удобен, когда вам нужно получить точный момент времени в UTC.
Date.UTC() работает именно в UTC
Это главный смысл этого метода.
Date.UTC() собирает дату не в локальном часовом поясе пользователя, а именно в UTC.
Поэтому он полезен, когда:
- нужно получить единое время без привязки к часовому поясу
- дата должна одинаково считаться у всех пользователей
- вы работаете с сервером, API или timestamp
Чем Date.UTC() отличается от new Date()
Вот важная разница:
Date.UTC()возвращает числоnew Date(...)возвращает объектDate
Кроме этого, new Date(year, monthIndex, day, ...) создаёт дату в локальном часовом поясе пользователя, а Date.UTC(...) считает дату в UTC.
const utcTimestamp = Date.UTC(2025, 0, 15, 10, 30);
const date = new Date(utcTimestamp);
console.log(typeof utcTimestamp); // "number"
console.log(typeof date); // "object"
Если вам нужен именно timestamp в UTC, чаще подходит Date.UTC().
Если нужен объект даты с методами вроде getFullYear() или toISOString(), тогда обычно используют new Date(...).
Date.UTC() и new Date(Date.UTC(...))
Очень частая связка выглядит так:
const date = new Date(Date.UTC(2025, 0, 15, 10, 30));
console.log(date.toISOString()); // "2025-01-15T10:30:00.000Z"
Здесь:
Date.UTC(...)создаёт timestampnew Date(...)превращает этот timestamp в объектDate
Это удобный способ получить объект даты, который изначально собран как момент времени в UTC.
Если передать только год
Можно передать только первый аргумент.
const timestamp = Date.UTC(2025);
console.log(timestamp); // 1735689600000
console.log(new Date(timestamp).toISOString()); // "2025-01-01T00:00:00.000Z"
То есть:
- год будет
2025 - месяц станет
0- январь - день станет
1 - время будет
00:00:00.000
Нумерация месяцев начинается с нуля
Это одна из самых частых ошибок.
В Date.UTC():
0- январь1- февраль2- март- …
11- декабрь
console.log(new Date(Date.UTC(2025, 0, 1)).toISOString());
// "2025-01-01T00:00:00.000Z"
Если написать 1, это будет уже февраль.
Когда это полезно
Date.UTC() особенно удобен, когда:
- нужно собрать timestamp из отдельных чисел
- дата должна считаться именно в
UTC - вы сохраняете дату для сервера или базы данных
- хотите избежать влияния локального часового пояса
Пример:
const expiresAt = Date.UTC(2025, 0, 31, 23, 59, 59);
console.log(expiresAt);
Такой timestamp удобно хранить и сравнивать как обычное число.
Date.UTC() не форматирует дату
Метод не возвращает красивую строку и не создаёт готовый объект даты.
Он возвращает только число.
const timestamp = Date.UTC(2025, 0, 15);
console.log(timestamp); // 1736899200000
Если нужен читаемый вид, сначала надо создать объект Date.
const date = new Date(Date.UTC(2025, 0, 15));
console.log(date.toISOString()); // "2025-01-15T00:00:00.000Z"
Частые ошибки
Думать, что Date.UTC() возвращает объект Date
const result = Date.UTC(2025, 0, 15);
console.log(typeof result); // "number"
Это число, а не объект даты.
Путать UTC и локальное время
Date.UTC(2025, 0, 15, 10, 30) означает время 10:30 именно по UTC, а не по локальному часовому поясу пользователя.
Забывать, что месяцы начинаются с нуля
Date.UTC(2025, 1, 1);
Это не январь, а февраль.
Использовать new Date.UTC()
Date.UTC() - это статический метод объекта Date, а не конструктор.
Правильно:
Date.UTC(2025, 0, 15);
А если нужен объект даты:
new Date(Date.UTC(2025, 0, 15));
Не знать про годы от 0 до 99
Если передать год от 0 до 99, JavaScript интерпретирует его как 1900-1999.
const timestamp = Date.UTC(99, 0, 1);
console.log(new Date(timestamp).toISOString()); // "1999-01-01T00:00:00.000Z"
Из-за этого 99 здесь означает не 0099 год, а 1999.
Быстрая памятка
Date.UTC()принимает отдельные части даты- метод возвращает timestamp в миллисекундах
Date.UTC()работает вUTC, а не в локальном времениDate.UTC()не создаёт объектDate- месяцы нумеруются от
0до11 - результат
Date.UTC(...)можно передать вnew Date(...)
Коротко
Date.UTC() в JavaScript нужен, чтобы собрать дату из отдельных значений и сразу получить timestamp в UTC. Главное, что стоит запомнить: метод возвращает число, работает не в локальном времени, а в UTC, и особенно полезен там, где дата должна быть одинаковой для всех пользователей и систем.