Может кто-нибудь предложить способ сравнения значений двух дат больше, меньше, а не в прошлом с использованием JavaScript? Значения будут поступать из текстовых полей.
1953
Может кто-нибудь предложить способ сравнения значений двух дат больше, меньше, а не в прошлом с использованием JavaScript? Значения будут поступать из текстовых полей.
Ответы:
Объект Дата будет делать то , что вы хотите - конструкт один на каждую дату, а затем сравнить их с помощью
>
,<
,<=
или>=
.==
,!=
,===
, И!==
операторы требуют использоватьdate.getTime()
как вчтобы быть понятным, просто проверка на равенство непосредственно с объектами даты не будет работать
Тем не менее, я предлагаю вам использовать выпадающие списки или какую-то похожую ограниченную форму ввода даты, а не текстовые поля, чтобы не оказаться в аду проверки ввода.
источник
setHours(0,0,0,0)
так. Устраняет необходимость вызоваsetMinutes()
и т. Д. Кроме того, выполняется быстрее.toString()
метод в обе даты, а затем сравнить с==
оператором? Кажется, намного проще, чем сбрасывать время и сравнивать потом, есть ли недостатки для этого?Самый простой способ сравнить даты в javascript - сначала преобразовать его в объект Date, а затем сравнить эти объекты date.
Ниже вы найдете объект с тремя функциями:
dates.compare (а, б)
Возвращает число:
date.inRange (d, начало, конец)
Возвращает логическое значение или NaN:
dates.convert
Используется другими функциями для преобразования их ввода в объект даты. Ввод может быть
,
источник
(a > b) - (a < b)
полезно для сортировки массива датArray.prototype.sort
условии, что все значения являются действительными датами. Если могут быть недействительные даты, я рекомендую использовать что-то вродеfunction ( a, b ) { a = a === undefined || a === null : NaN : a.valueOf( a ); b = a === undefined || b === null : NaN : a.valueOf( b ); return isFinite( a ) && isFinite( b ) ? ( a > b ) - ( a < b ) : NaN; }
return a - b
проще и заменяет весь оператор return.Сравните
<
и>
как обычно, но все, что связано,=
должно использовать+
префикс. Вот так:Надеюсь это поможет!
источник
x.getTime() === y.getTime()
метод, как читабельный, так и очень быстрый, см. jsperf+
Оператор пытается преобразовать выражение в номер.Date.valueOf()
используется для преобразования (которое возвращает то же самое, что иDate.getTime()
.<
,<=
,>
И>=
использовать тот же алгоритм ( абстрактный алгоритм относительного сравнения ) за кулисами.Реляционные операторы
<
<=
>
>=
могут использоваться для сравнения дат JavaScript:Однако операторы равенства
==
!=
===
!==
не могут быть использованы для сравнения (значения) дат, потому что :Вы можете сравнить значение дат на равенство, используя любой из этих методов:
Оба
Date.getTime()
иDate.valueOf()
возвращают количество миллисекунд с 1 января 1970 года, 00:00 UTC. ИNumber
функция, и унарный+
оператор вызываютvalueOf()
методы за сценой.источник
Thursday, 10 Aug 2017
это нестандартный формат, и разные браузеры могут анализировать его по-разному или не анализировать вообще. Смотрите заметки наDate.parse
.Безусловно, самый простой способ - вычесть одну дату из другой и сравнить результат.
источник
Сравнение дат в JavaScript довольно просто ... В JavaScript есть встроенная система сравнения дат, которая делает сравнение таким простым ...
Просто выполните следующие шаги для сравнения значения 2 дат, например, у вас есть 2 входа, каждый из которых имеет значение даты,
String
и вы можете сравнить их ...1. у вас есть 2 строковых значения, которые вы получаете из входных данных, и вы хотите сравнить их, как показано ниже:
2. Их нужно
Date Object
сравнивать как значения даты, поэтому просто конвертируйте их в дату, используяnew Date()
, я просто переназначаю их для простоты объяснения, но вы можете сделать это в любом случае:3. Теперь просто сравните их, используя
>
<
>=
<=
источник
<
,>
,<=
,>=
) используется, дата объекты преобразуются первым в UNIX эпохи ( в секундах), и он работает отлично. Однако это может привести к распространенной ошибке,date1 == date2
когда действительно вводится ошибка, поскольку проверяется не равенство, а значение. Чтобы предотвратить это и проверить равенство значения даты, это сработало бы:date1.valueOf() == date2.valueOf()
или корочеdate1+0 == date2+0
Note: Parsing of strings with Date.parse is strongly discouraged due to browser differences and inconsistencies.
иNote: Parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies.
Сравнить только день (без учета компонента времени):
Применение:
источник
какой формат?
Если вы создаете объект Javascript Date , вы можете просто вычесть их, чтобы получить разницу в миллисекунды (отредактируйте или просто сравните их):
источник
==
проблемы сравнения, упомянутой выше.Вы используете этот код,
А также проверьте эту ссылку http://www.w3schools.com/js/js_obj_date.asp
источник
КОРОТКИЙ ОТВЕТ
Вот функция, которая возвращает {boolean}, если от dateTime> до dateTime Demo в действии
объяснение
jsFiddle
так как теперь у вас есть оба datetime в числовом типе, вы можете сравнить их с любыми операциями сравнения
(>, <, =,! =, ==,! ==,> = AND <=)
затем
Если вы знакомы с
C#
пользовательской строкой формата даты и времени, эта библиотека должна делать то же самое и помогать форматировать дату и время в формате dtmFRM независимо от того, передаете ли вы строку даты или времени или формат Unix.Применение
DEMO
все, что вам нужно сделать, это передать любой из этих форматов в
js
файл библиотекиисточник
Простой способ,
источник
Примечание - Сравнить только часть даты:
Когда мы сравниваем две даты в JavaScript. Это также учитывает часы, минуты и секунды. Так что, если нам нужно только сравнить только дату, это подход:
Теперь:
if date1.valueOf()> date2.valueOf()
будет работать как шарм.источник
источник
a
иb
будучиDate
объектами, вы также можете использоватьreturn a*1 == b*1;
+a == +b
источник
Просто чтобы добавить еще одну возможность ко многим существующим опциям, вы можете попробовать:
... что, кажется, работает для меня. Конечно, вы должны убедиться, что обе даты не определены ...
Таким образом, мы можем обеспечить положительное сравнение, если оба они тоже не определены, или ...
... если вы предпочитаете, чтобы они не были равны.
источник
Via Moment.js
Jsfiddle: http://jsfiddle.net/guhokemk/1/
Метод возвращает 1, если
dateTimeA
больше чемdateTimeB
Метод возвращает 0, если
dateTimeA
равноdateTimeB
Метод возвращает -1, если
dateTimeA
меньшеdateTimeB
источник
Date
объектам.<
или,>
если момент уже наступает с удобными методами сравнения, такими как.isBefore
и.isAfter
, это все в документахОСТЕРЕГАЙТЕСЬ ВРЕМЕНИ
Дата в JavaScript не имеет понятия о часовом поясе . Это момент времени (тики начиная с эпохи) с удобными функциями для перевода в и из строк в «местном» часовом поясе. Если вы хотите работать с датами, используя объекты даты, как это делают все здесь, вы хотите , чтобы ваши даты представляли полночь UTC в начале рассматриваемой даты.Это общее и необходимое соглашение, которое позволяет вам работать с датами независимо от сезона или часового пояса их создания. Таким образом, вы должны быть очень бдительными, чтобы управлять понятием часового пояса, особенно когда вы создаете свой объект UTC Date.
В большинстве случаев вы хотите, чтобы ваша дата отражала часовой пояс пользователя. Нажмите, если сегодня ваш день рождения . Пользователи в Новой Зеландии и США нажимают одновременно и получают разные даты. В таком случае сделай это ...
Иногда международная сопоставимость превосходит локальную точность. В таком случае сделай это ...
Теперь вы можете напрямую сравнивать объекты даты, как предлагают другие ответы.
Позаботившись об управлении часовым поясом при создании, вы также должны быть уверены, что часовой пояс не будет отображаться при преобразовании обратно в строковое представление. Так что вы можете смело использовать ...
toISOString()
getUTCxxx()
getTime() //returns a number with no time or timezone.
.toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.
И полностью избегать всего остального, особенно ...
getYear()
,getMonth()
,getDate()
источник
Допустим, вы получили объекты даты A и B, получите их значение времени EPOC, затем вычтите, чтобы получить разницу в миллисекундах.
Это все.
источник
Для сравнения двух дат мы можем использовать библиотеку JavaScript date.js, которую можно найти по адресу: https://code.google.com/archive/p/datejs/downloads
и использовать
Date.compare( Date date1, Date date2 )
метод, и он возвращает число, которое означает следующий результат:-1 = дата1 меньше даты2.
0 = значения равны.
1 = дата1 больше даты2.
источник
Вычтите две даты получите разницу в миллисекундах, если вы получите
0
ту же датуисточник
Для того, чтобы создавать даты из свободного текста в Javascript, вам нужно разобрать его в объект Date ().
Вы можете использовать Date.parse (), который использует свободный текст, пытается преобразовать его в новую дату, но если у вас есть контроль над страницей, я бы рекомендовал вместо этого использовать поля выбора HTML или средство выбора даты, такое как элемент управления календаря YUI или пользовательский интерфейс jQuery. DatePicker .
Как только у вас есть дата, как указали другие люди, вы можете использовать простую арифметику, чтобы вычесть даты и преобразовать их обратно в число дней, разделив число (в секундах) на количество секунд в дне (60 * 60 * 24 = 86400).
источник
источник
Улучшенная версия кода, размещенная "некоторыми"
Применение:
источник
Если следующий формат даты, вы можете использовать этот код:
Он проверит,
20121121
больше20121103
или нет число.источник
first == second
илиfirst < second
илиfirst > second
. Это одна из многих красот с ISO8601 по сравнению с ММ / ДД / ГГ, ДД / ММ / ГГ, ГГ / ДД / ММ, ДД / ГГ / ММ или ММ / ГГ / ДД.Я обычно храню
Dates
какtimestamps(Number)
в базах данных.Когда мне нужно сравнить, я просто сравниваю среди этих временных меток или
преобразовать его в Date Object, а затем сравнить с
> <
при необходимости.Обратите внимание, что == или === не работает должным образом, если ваши переменные не являются ссылками на один и тот же объект Date.
Сначала преобразуйте эти объекты Date в отметку времени (число), а затем сравните их равенство.
Дата к метке времени
Отметка времени на сегодняшний день
источник
Прежде чем сравнивать
Dates
объект, попробуйте установить обе их миллисекунды равными нулюDate.setMilliseconds(0);
.В некоторых случаях, когда
Date
объект динамически создается в javascript, если вы продолжите печататьDate.getTime()
, вы увидите изменение миллисекунд, что помешает равенству обеих дат.источник
Представление
Сегодня 2020.02.27 я выполняю тесты выбранных решений на Chrome v80.0, Safari v13.0.5 и Firefox 73.0.1 на MacOs High Sierra v10.13.6
Выводы
d1==d2
(D) иd1===d2
(E) являются самыми быстрыми для всех браузеровgetTime
(A) быстрее, чемvalueOf
(B) (оба являются средне-быстрыми)подробности
Ниже представлены решения с фрагментами, используемые в тестах производительности. Вы можете выполнить тест на вашей машине ЗДЕСЬ
Показать фрагмент кода
Результаты для хрома
источник
d1==d2
илиd1===d2
бесполезен в контексте вопроса.Используйте этот код для сравнения даты с использованием JavaScript.
Спасибо Д.Джеева
источник
источник
Вот что я сделал в одном из моих проектов,
называя это на форме на представлении. надеюсь это поможет.
источник