Локальное время

Локальное время — это дата и время, привязанные к часовому поясу системы, в которой выполняется Javascript-код. По умолчанию Moment.js работает именно с локальным временем браузера или среды Node.js.

Создание объекта даты:

const now = moment();

console.log(now.format());

Пример результата:

2026-05-21T14:35:10+06:00

Смещение +06:00 указывает локальный часовой пояс системы.


Создание локальной даты

Текущая дата и время

const now = moment();

Moment автоматически использует локальные настройки системы.


Создание даты из строки

const date = moment('2026-05-21 18:30');

console.log(date.format());

Результат:

2026-05-21T18:30:00+06:00

Дата интерпретируется как локальная.


Создание даты с форматом

const date = moment('21.05.2026 18:30', 'DD.MM.YYYY HH:mm');

console.log(date.format());

Проверка локального режима

Метод isLocal() определяет, использует ли объект локальное время.

const localDate = moment();

console.log(localDate.isLocal());

Результат:

true

Преобразование UTC в локальное время

Moment.js поддерживает преобразование времени UTC в локальное системное время.

Работа с UTC

const utcDate = moment.utc('2026-05-21T12:00:00Z');

console.log(utcDate.format());

Результат:

2026-05-21T12:00:00Z

Перевод UTC в local

const localDate = utcDate.local();

console.log(localDate.format());

Если локальный часовой пояс +06:00, результат будет:

2026-05-21T18:00:00+06:00

Moment пересчитывает время относительно локального смещения.


Метод local()

Метод local() переводит объект Moment в локальный режим.

const date = moment.utc('2026-05-21T00:00:00Z');

date.local();

console.log(date.format());

Работа с часовым смещением

Получение смещения

Метод utcOffset() возвращает смещение в минутах.

const offset = moment().utcOffset();

console.log(offset);

Пример:

360

Значение 360 означает UTC+6.


Установка смещения

const date = moment().utcOffset(180);

console.log(date.format());

Смещение задаётся в минутах.


Использование строкового смещения

const date = moment().utcOffset('+03:00');

console.log(date.format());

Автоматическое определение локального времени

Moment.js автоматически:

  • определяет часовой пояс системы;
  • учитывает настройки операционной системы;
  • применяет переходы на летнее и зимнее время;
  • использует локаль браузера.

Пример:

console.log(moment().format());

Форматирование локального времени

Базовый формат

console.log(moment().format('YYYY-MM-DD HH:mm:ss'));

Результат:

2026-05-21 14:45:30

Вывод часового пояса

console.log(moment().format('Z'));

Результат:

+06:00

Полный формат

console.log(moment().format('dddd, D MMMM YYYY HH:mm:ss Z'));

Пример:

четверг, 21 мая 2026 14:45:30 +06:00

Локализация времени

Moment.js поддерживает локализацию дат.

Подключение локали

moment.locale('ru');

Форматирование с локалью

const date = moment();

console.log(date.format('LLLL'));

Пример:

четверг, 21 мая 2026 г., 14:50

Разница между UTC и локальным временем

Локальное время

const local = moment();

Использует часовой пояс системы.


UTC-время

const utc = moment.utc();

Использует универсальное координированное время.


Сравнение

console.log(local.format());
console.log(utc.format());

Пример:

2026-05-21T14:55:00+06:00
2026-05-21T08:55:00Z

Конвертация между часовыми поясами

Moment.js умеет работать с часовыми поясами через библиотеку Moment Timezone.

Подключение:

<script src="moment.js"></script>
<script src="moment-timezone.js"></script>

Пример преобразования

const date = moment.tz('2026-05-21 12:00', 'Europe/Moscow');

console.log(date.format());

Перевод в локальное время

const localDate = date.local();

console.log(localDate.format());

Определение локального часового пояса

Метод guess()

console.log(moment.tz.guess());

Пример:

Asia/Almaty

Работа с летним временем

Moment.js автоматически учитывает DST (Daylight Saving Time).

Проверка DST

const date = moment();

console.log(date.isDST());

Результат:

true

или

false

Сравнение локальных дат

Проверка равенства

const a = moment('2026-05-21 10:00');
const b = moment('2026-05-21 12:00');

console.log(a.isSame(b, 'day'));

Проверка порядка

console.log(a.isBefore(b));
console.log(a.isAfter(b));

Арифметика локального времени

Добавление времени

const date = moment();

date.add(3, 'hours');

console.log(date.format());

Вычитание времени

date.subtract(2, 'days');

Начало и конец периода

console.log(moment().startOf('day').format());
console.log(moment().endOf('day').format());

Относительное локальное время

Метод fromNow()

const date = moment().subtract(3, 'hours');

console.log(date.fromNow());

Результат:

3 часа назад

Метод toNow()

const date = moment().add(2, 'days');

console.log(date.toNow());

Парсинг локального времени

Строгий режим

const date = moment(
    '21-05-2026',
    'DD-MM-YYYY',
    true
);

console.log(date.isValid());

Невалидная дата

const invalid = moment('99-99-9999', 'DD-MM-YYYY');

console.log(invalid.isValid());

Результат:

false

Клонирование локальных дат

Moment.js изменяет исходный объект, поэтому часто используется клонирование.

const original = moment();
const copy = original.clone();

copy.add(1, 'day');

console.log(original.format());
console.log(copy.format());

Сериализация локального времени

В JSON

const date = moment();

console.log(date.toJSON());

В объект Date

const nativeDate = moment().toDate();

console.log(nativeDate);

Unix-время и локальные даты

Получение timestamp

console.log(moment().unix());

Создание из timestamp

const date = moment.unix(1780000000);

console.log(date.format());

Частые ошибки при работе с локальным временем

Смешивание UTC и local

Ошибка:

const utc = moment.utc();
const local = moment();

console.log(utc.diff(local));

Разные режимы времени могут давать неожиданные результаты.


Изменение исходного объекта

const date = moment();

const modified = date.add(1, 'day');

console.log(date.format());

Метод add() изменяет оригинальный объект.


Игнорирование часового пояса

moment('2026-05-21T10:00:00');

Без указания зоны строка трактуется как локальное время.


Практический пример: отображение локального времени пользователя

moment.locale('ru');

const now = moment();

console.log(
    now.format('D MMMM YYYY, HH:mm:ss')
);

Результат:

21 мая 2026, 15:10:45

Практический пример: локальное время события

const eventUtc = moment.utc(
    '2026-05-21T15:00:00Z'
);

const userTime = eventUtc.local();

console.log(
    userTime.format('YYYY-MM-DD HH:mm')
);

Практический пример: таймер до события

const eventDate = moment('2026-06-01');

console.log(eventDate.fromNow());

Пример результата:

через 11 дней

Практический пример: журналирование времени

function log(message) {
    const time = moment().format(
        'YYYY-MM-DD HH:mm:ss'
    );

    console.log(`[${time}] ${message}`);
}

log('Сервер запущен');

Результат:

[2026-05-21 15:20:10] Сервер запущен