Как вычислить разницу в часах между датами в Moment Js
Быстрый ответ
Для решения временных задач используйте функцию .diff()
в Moment.js:
// С помощью Moment.js время больше не будет казаться относительным!
const diffHours = moment(endDate).diff(moment(startDate), 'hours');
console.log(diffHours); // Получаем строгое количество часов разницы.
Если необходимы дробные значения, объекты duration
помогут с методом .asHours()
:
// Почему ограничиваться целыми числами, когда нужна точность?
const duration = moment.duration(moment(endDate).diff(moment(startDate)));
const diffFractionalHours = duration.asHours();
console.log(diffFractionalHours); // Дробные части рассчитаны – точность достигнута!
Манипуляции с часовыми поясами
Работаете со временем в разных часовых поясах? Moment Timezone к вашим услугам:
// Находясь где угодно, от Нью-Йорка до Лос-Анджелеса, используйте Moment Timezone Java(script)!
let startDate = moment.tz("2023-05-25 12:00", "America/New_York");
let endDate = moment.tz("2023-05-26 16:00", "America/Los_Angeles");
let diffHours = endDate.diff(startDate, 'hours');
console.log(diffHours); // Часовые пояса перестают быть проблемой!
Путешествие во времени с fromNow()
и from()
Освободитесь от ограничений календаря с помощью fromNow()
или from()
для расчета временного интервала:
// Возможно, это прямо-таки краткое пребывание обратно в прошлом!
let pastDate = moment("2023-01-01");
console.log(pastDate.fromNow()); // Почувствуем ностальгию заново!
Однако приверженность методам .diff()
и .asHours()
будет кстати при традиционных расчётах разницы в часах:
// Приветствуем возвращение в будущее!
let pastDate = moment("2023-01-01");
let diffHours = moment().diff(pastDate, 'hours');
console.log(diffHours); // Tempus fugit, но мы всё контролируем.
Цепочка методов
Зачем писать две строки кода, когда можно обойтись одной?
// Экономия времени написания кода – загадка, решаемая одной строкой!
let hoursDifference = moment(endDate).subtract(1, 'days').diff(moment(startDate), 'hours');
// Мы вычитаем день и считаем часы – это просто!
Визуализация
Простая тайм-лайн в Moment.js между двумя датами:
Начальная дата: 📅🕒 (25 мая, 12:00 дня)
Конечная дата: 📅🕚 (26 мая, 16:00 дня)
Соедините точки, чтобы получить общую картину:
// Время всегда в наших руках.
let diff = endDate.diff(startDate, 'hours');
📅🕒 ------ 16 часов ------ 📅🕚
И вуаля, перед вами **16-часовая тайм-лайн** от полудня одного дня до позднего дня следующего.
Программирование на профессиональном уровне
Персонализируйте формат вывода дат
Функция .format()
превратит вас в Пикассо в мире дат:
// Не откладывайте на завтра то, что можно сделать сегодня.
console.log(endDate.format('MMMM Do YYYY, h:mm:ss a')); // "26 мая 2023 года, 4:00:00 дня"
Переход на летнее время (DST)
Каждый будет рад дополнительному часу сна:
// Кто разберётся в DST? (Только Moment.js!)
let startDSTDate = moment('2023-03-13T02:00:00-0400');
let endDSTDate = moment('2023-03-13T03:00:00-0400');
let diffDSTHours = endDSTDate.diff(startDSTDate, 'hours');
console.log(diffDSTHours); // Час DST прямо перед вами!
Используйте последнюю версию Moment.js
Выбирайте новейшую и наиболее стабильную версию Moment.js:
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
Комментарии и именование
Понятные названия переменных сделают ваш код более читабельным и помогут сэкономить время:
// Проявите презрение ко времени: используйте переменные, которые декларируют своё назначение!
let meetingStart = moment('2023-06-01T09:00:00');
let meetingEnd = moment('2023-06-01T17:00:00');
let meetingDurationHours = meetingEnd.diff(meetingStart, 'hours');
console.log(meetingDurationHours); // Рабочий день с 9 до 17 отражён в вашей консоли!
Полезные материалы
- Документация Moment.js — ваш главный информационный ресурс о функции
.diff
в Moment.js. - Разница в часах между двумя датами с Moment.js – Stack Overflow — собрание настоящих хаков на Stack Overflow.
- Шпаргалка по Moment.js —
- ваше верное руководство по Moment.js
- Понимание даты и времени в JavaScript | DigitalOcean — погружение в управление датой и временем в JavaScript.
- Документация Moment Timezone — всемирное руководство по часовым поясам в Moment.js.