Я хочу рассчитать разницу в днях, часах, минутах, секундах, миллисекундах, наносекундах. Как мне это сделать?
javascript
datetime
Фархан Сиддики
источник
источник
Ответы:
Предполагая, что у вас есть два
Date
объекта , вы можете просто вычесть их, чтобы получить разницу в миллисекундах:Оттуда вы можете использовать простую арифметику для получения других значений.
источник
Math.floor((date2 - date1) / (1000*60*60*24))
- для разницы в любой другой единице настройте знаменатель (базовое значение в мс).Пример кода взят отсюда .
источник
Другое решение - преобразовать разницу в новый объект Date и получить год этой даты (разница с 1970), месяц, день и т. Д.
Таким образом, разница как «3 года и 6 месяцев и 4 дня». Если вы хотите почувствовать разницу в удобочитаемом стиле, это может вам помочь.
источник
Выражения типа «разница в днях» никогда не бывают такими простыми, как кажется. Если у вас есть следующие даты:
разница во времени составляет 2 минуты, должна ли «разница в днях» быть 1 или 0? Аналогичные проблемы возникают при любом выражении разницы в месяцах, годах и т. Д., Поскольку годы, месяцы и дни имеют разную продолжительность и разное время (например, день, когда начинается переход на летнее время, на 1 час короче обычного и на два часа короче дня, когда Это конец).
Вот функция для разницы в днях, которая игнорирует время, то есть для вышеуказанных дат она возвращает 1.
Это может быть более кратким:
источник
источник
использование Moment.js для всех ваших расчетов даты и времени, связанных с JavaScript
Ответ на ваш вопрос:
Полную информацию можно найти здесь
источник
источник
С моментами все просто:
источник
источник
Извините, но плоский миллисекундный расчет не является надежным Спасибо за все ответы, но некоторые из опробованных мной функций не работают: 1. Дата, близкая к сегодняшней, 2. Дата в 1970 или 3. Дата в високосном году.
Подход, который лучше всего сработал для меня и охватывает все сценарии, например високосный год, недалекую дату в 1970 году, 29 февраля и т. Д.
источник
Если вы используете moment.js, то найти разницу в дате довольно просто.
источник
источник
Я думаю, что это должно сделать это.
источник
Вот как вы можете реализовать разницу между датами без рамки.
источник
источник
Хорошо, есть множество способов сделать это. Да, вы можете использовать старый добрый JS. Просто попробуй:
Давайте эмулируем переход, используя Date.prototype.setMinutes и убедимся, что мы находимся в диапазоне.
В качестве альтернативы вы можете использовать библиотеку, такую как js-joda , где вы можете легко делать такие вещи (прямо из документов):
Существует множество других библиотек, но js-joda имеет дополнительный бонус за доступность также на Java, где она была тщательно протестирована. Все эти тесты были перенесены в js-joda, он также неизменен.
источник
это должно работать нормально, если вам просто нужно показать, сколько времени осталось, так как JavaScript использует кадры, в то время как у вас будет время окончания - Время RN, после чего мы можем разделить его на 1000, поскольку, очевидно, 1000 кадров = 1 секунда, после этого вы можете использовать основную математику времени, но в этом коде по-прежнему есть проблема, поскольку вычисления являются статическими, они не могут компенсировать разницу в количестве дней в году (360/365/366), куча Если после вычисления значение обнуляется, если время меньше 0, надеюсь, это поможет, хотя это не совсем то, что вы просите :)
источник