Вычисление количества дней между двумя датами в JavaScript требуется для использования объекта даты для любого вида расчета. Для этого сначала получите внутреннее значение миллисекунды даты, используя встроенную функцию JavaScript getTime () . Как только обе даты будут преобразованы, продолжайте, вычитая более позднюю из предыдущей, которая, в свою очередь, возвращает разницу в миллисекундах. Позднее окончательный результат можно рассчитать путем деления разницы (в миллисекундах) обеих дат на количество миллисекунд в одном дне.
Синтаксис:
Подход 1:
- Определите две даты, используя новую Date () .
- Рассчитать разницу во времени двух дат с помощью date2.getTime () — date1.getTime ();
- Рассчитать нет. дней между двумя датами, разделите разницу во времени обеих дат на нет. миллисекунд в день (1000 * 60 * 60 * 24)
- Напечатайте окончательный результат, используя document.write () .
Пример 1: Следующая программа JavaScript проиллюстрирует решение
На данный вопрос уже ответили:
Здравствуйте. В процессе работы возникли сложности с выводом количества разницы дней между датами введенными в два input type=»data», как делать разницу между тем что является строкой? Тип data, потому что при запуске страницы js подгружает сегодняшнюю дату и дату плюс 3 дня. А нужно сравнение между введенными, а не установленными, то есть вызов функции будет(логично) через onchange. Спасибо за наводки, надеюсь, объяснил нормально.
Содержание
- Отмечен как дубликат участниками jfs, Pavel Mayorov, Sergey Gornostaev, rjhdby, AseN 11 окт ’17 в 19:39 .
- 36 ответов
- Описание
Отмечен как дубликат участниками jfs, Pavel Mayorov, Sergey Gornostaev, rjhdby, AseN 11 окт ’17 в 19:39 .
Подобный вопрос задавали ранее и на него уже получен ответ. Если представленные ответы не являются исчерпывающими, пожалуйста, задайте новый вопрос.
Как получить количество дней между двумя датами в JavaScript? Например, учитывая две даты в поле ввода:
36 ответов
346 Решение Miles [2009-02-12 23:43:00]
Вот быстрая и грязная реализация datediff , как доказательство концепции для решения проблемы, представленной в вопросе. Он полагается на то, что вы можете получить истекшие миллисекунды между двумя датами, вычитая их, что приводит их к их первообразному значению числа (миллисекунды с начала 1970 года).
Вы должны знать, что «обычные» API-интерфейсы даты (без «UTC» в имени) работают в локальном часовом поясе пользовательского браузера, поэтому, в общем, вы можете столкнуться с проблемами, если ваш пользователь находится в часовом поясе, ожидайте, и ваш код будет иметь дело с переходами на летнее время. Вы должны внимательно прочитать документацию для объекта Date и его методов, а для чего-то более сложного, настоятельно рекомендуем использовать библиотеку, которая предлагает более безопасные и мощные API для обработки дат.
Кроме того, для иллюстративных целей фрагмент использует кратность для именованного доступа к объекту window , но в процессе производства вы должны использовать стандартизированные API, такие как getElementById или, более вероятно, некоторые интерфейсы пользовательского интерфейса.
185 Michael Liu [2012-06-28 23:13:00]
На момент написания этой статьи, только один из других ответов правильно обрабатывает переходы DST (переход на летнее время). Вот результаты по системе, расположенной в Калифорнии:
Хотя Math.round возвращает правильные результаты, я думаю, что он несколько неуклюж. Вместо этого, явно учитывая изменения смещения UTC, когда DST начинается или заканчивается, мы можем использовать точную арифметику:
Описание
Расчеты с датой в JavaScript сложны, потому что Date объекты хранятся внутри внутри UTC, а не по местному времени. Например, 3/10/2013 12:00 AM Тихоокеанское стандартное время (UTC-08: 00) хранится как 3/10/2013 8:00 AM UTC и 3/11/2013 12:00 AM Pacific Daylight Time ( UTC-07: 00) хранится как 3/11/2013 7:00 UTC. В этот день полночь в полночь по местному времени составляет только 23 часа в UTC!
Хотя день в местное время может быть больше или меньше 24 часов, день в UTC всегда ровно 24 часа. 1 . Метод daysBetween , показанный выше, использует этот факт, сначала вызывая treatAsUTC , чтобы настроить оба локальных раза до полуночи UTC, прежде чем вычитать и делить.
1. JavaScript игнорирует секунды прыжка.
106 some [2009-02-13 04:50:00]
Самый простой способ получить разницу между двумя датами:
Вы получаете дни разницы (или NaN, если один или оба не могут быть проанализированы). Дата синтаксического анализа дала результат в миллисекундах, и чтобы получить его на день, вы должны разделить его на 24 * 60 * 60 * 1000
Если вы хотите, чтобы он делился на дни, часы, минуты, секунды и миллисекунды:
Вот моя рефакторинговая версия версии Джеймса:
Я рекомендую использовать библиотеку moment.js(http://momentjs.com/docs/#/displaying/difference/). Он правильно управляет летним временем и в целом отлично работает.
40 fuentesjr [2009-02-12 23:45:00]
Я бы пошел и захватил эту небольшую утилиту, и в ней вы найдете функции для этого. Вот краткий пример:
Источник: