UTC (Coordinated Universal Time) — универсальный мировой стандарт времени, не зависящий от часовых поясов и сезонного перевода часов. В Moment.js поддержка UTC встроена на уровне ядра библиотеки и используется для:
<script src="https://cdn.jsdelivr.net/npm/moment@2.29.4/moment.min.js"></script>
Для Node.js:
npm install moment
const moment = require('moment');
moment.utc()Главный способ работы с UTC — использование метода
moment.utc().
const date = moment.utc();
console.log(date.format());
Результат:
2026-05-21T12:30:45Z
Символ Z означает UTC.
const date = moment.utc('2026-05-21 15:00');
console.log(date.format());
Moment интерпретирует значение как UTC-время.
const date = moment.utc([2026, 4, 21, 10, 30]);
console.log(date.format());
Результат:
2026-05-21T10:30:00Z
Месяцы в Moment.js индексируются с нуля:
| Значение | Месяц |
|---|---|
| 0 | Январь |
| 1 | Февраль |
| 4 | Май |
const date = moment.utc(1716288000000);
console.log(date.format());
isUTC()const localDate = moment();
const utcDate = moment.utc();
console.log(localDate.isUTC());
console.log(utcDate.isUTC());
Результат:
false
true
utc()const local = moment();
console.log(local.format());
local.utc();
console.log(local.format());
После вызова utc() объект начинает работать в UTC.
moment.utc() и .utc()moment.utc()Создаёт новый объект сразу в UTC.
const date = moment.utc();
.utc()Конвертирует существующий объект.
const date = moment().utc();
local()const utcDate = moment.utc();
console.log(utcDate.format());
utcDate.local();
console.log(utcDate.format());
const date = moment.utc();
console.log(date.format('YYYY-MM-DD HH:mm:ss'));
const date = moment.utc();
console.log(date.toISOString());
Пример:
2026-05-21T12:45:10.000Z
const date = moment.utc();
console.log(date.format('Z'));
Результат:
+00:00
utcOffset()Позволяет установить произвольное смещение.
const date = moment().utcOffset(180);
console.log(date.format());
180 минут = +03:00.
const date = moment().utcOffset(-300);
console.log(date.format());
Результат соответствует -05:00.
const date = moment();
console.log(date.utcOffset());
Результат выводится в минутах.
const local = moment('2026-05-21 18:00');
console.log(local.format());
const utc = local.clone().utc();
console.log(utc.format());
UTC особенно важен при взаимодействии с backend-системами.
const serverTime = '2026-05-21T12:00:00Z';
const date = moment.utc(serverTime);
console.log(date.format());
const serverTime = moment.utc('2026-05-21T12:00:00Z');
console.log(serverTime.local().format());
Unix Timestamp всегда хранится в UTC.
const timestamp = moment.utc().unix();
console.log(timestamp);
const date = moment.unix(1716288000).utc();
console.log(date.format());
const utcDate = moment.utc('2026-05-21 12:00');
const localDate = moment('2026-05-21 15:00');
console.log(utcDate.isSame(localDate));
Moment автоматически приводит значения к единому формату.
const date = moment.utc();
date.add(3, 'days');
console.log(date.format());
const date = moment.utc();
date.subtract(5, 'hours');
console.log(date.format());
const start = moment.utc('2026-05-01');
const end = moment.utc('2026-05-21');
console.log(end.diff(start, 'days'));
const date = moment.utc().startOf('day');
console.log(date.format());
const date = moment.utc().endOf('day');
console.log(date.format());
const date = moment.utc().startOf('month');
console.log(date.format());
const date = moment.utc('2026-05-21T14:30:00Z');
console.log(date.format());
const date = moment.utc(
'21-05-2026 14:30',
'DD-MM-YYYY HH:mm'
);
console.log(date.format());
isValid()const date = moment.utc('invalid');
console.log(date.isValid());
clone()const original = moment.utc();
const copy = original.clone();
copy.add(1, 'day');
console.log(original.format());
console.log(copy.format());
const data = {
createdAt: moment.utc()
};
console.log(JSON.stringify(data));
Moment автоматически преобразуется в ISO-формат UTC.
Наиболее распространённый подход:
Пример:
const createdAt = moment.utc().toISOString();
Неправильно:
moment('2026-05-21');
Правильно:
moment.utc('2026-05-21');
const local = moment();
const utc = moment.utc();
console.log(local.diff(utc));
Перед сравнением желательно привести даты к одному режиму.
Moment.js изменяет объект напрямую.
const date = moment.utc();
date.add(1, 'day');
Для безопасной работы:
const newDate = date.clone().add(1, 'day');
const event = {
id: 1,
createdAt: moment.utc().toISOString()
};
console.log(event);
const createdAt = moment.utc(event.createdAt);
console.log(
createdAt.local().format('DD.MM.YYYY HH:mm:ss')
);
const eventDate = moment.utc('2026-06-01 12:00');
const now = moment.utc();
const hours = eventDate.diff(now, 'hours');
console.log(hours);
fetch('/api/event', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
createdAt: moment.utc().toISOString()
})
});
fetch('/api/event')
.then(response => response.json())
.then(data => {
const date = moment.utc(data.createdAt);
console.log(date.local().format());
});
Для полноценной работы с часовыми поясами используется дополнение
moment-timezone.
<script src="https://cdn.jsdelivr.net/npm/moment-timezone/builds/moment-timezone-with-data.min.js"></script>
const date = moment.utc('2026-05-21T12:00:00Z');
console.log(
date.tz('Asia/Almaty').format()
);
const utc = moment.utc();
console.log(utc.tz('Europe/London').format());
console.log(utc.tz('Asia/Tokyo').format());
console.log(utc.tz('America/New_York').format());
Наиболее безопасная архитектура:
Предпочтительный формат:
2026-05-21T12:00:00Z
Нежелательно полагаться на автоматическое определение часового пояса.
Плохо:
moment(dateString);
Хорошо:
moment.utc(dateString);
clone()Moment.js изменяемый.
Безопасный подход:
const next = current.clone().add(1, 'day');
Moment.js считается legacy-библиотекой. Разработка переведена в режим поддержки.
Современные альтернативы:
Тем не менее Moment.js остаётся широко используемым во многих проектах и корпоративных системах, особенно при работе со старыми кодовыми базами.