Перейти к содержимому

Как сравнить 2 даты

  • автор:

Как сравнить две даты js

Чтобы сравнить даты, можно их преобразовать в объекты Date и сравнить обычным способом. Однако если даты одинаковые, то они не будут равны, так как сравнение идёт по ссылкам. Чтобы добиться корректного сравнения дат, можно использовать метод getTime() :

const firstDate = new Date('2022-03-15'); const secondDate = new Date('2022-03-13'); console.log(firstDate  secondDate); // false console.log(firstDate > secondDate); // true const equalDate1 = new Date('2022-03-13'); const equalDate2 = new Date('2022-03-13'); console.log(equalDate1.getTime() == equalDate2.getTime()); // true 

Сравнение дат

Раньше знаю надо было переводить в разные таймштампы, но похоже сейчас, если задать дату именно в таком формате. все должно быть ок, разве не так?

Отслеживать
14.3k 1 1 золотой знак 22 22 серебряных знака 35 35 бронзовых знаков
задан 2 окт 2011 в 15:44
Mykhaylo Petyakh Mykhaylo Petyakh
65 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Врядли потому что в таком случае вы сравниваете строки.
2 окт 2011 в 17:33

@AlexWindHope Неправда! Сравните это $curdate = date(‘d.m.Y’, strtotime(‘now’)); $revenge_date = «25.05.2015»; если будут первые числа месяца, то они будет меньше 25, хоть и год будет больше. И код будет работать неправильно!

27 апр 2015 в 19:22

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Если обе даты точно в формате Y-m-d (или Y-m-d H:i:s ), то логично сравнивать их как строки, т.е.

$date1='2011-02-12'; $date2='2012-02-13'; $result=($date1<$date2); //$result === true 

Но если нет уверенности, что формат дат одинаковый, то лучше привести их к формату unixtime и сравнивать как числа:

$date1='2011-02-12'; $date2='13.02.2012'; $result=($date1<$date2); //$result === false $result=(strtotime($date1) 

Отслеживать
20.7k 4 4 золотых знака 28 28 серебряных знаков 50 50 бронзовых знаков
ответ дан 2 окт 2011 в 20:52
196 7 7 бронзовых знаков
Ну практически то же что и я написал только в коде, согласен
3 окт 2011 в 6:02

> Если даты точно в одном формате, то логично сравнивать их как строки, т.е. Это не совсем так. Что бы сравнение строк работало корректно, нужно не только, что бы формат совпадал, но и что бы этот формат соответствовал стандарту ISO 8601, по которому дата записывается по убыванию значимости. Т.е. вариант date('d.m.Y') >= '02.11.2011' уже работать не будет, хоть формат и совпадает.

Как сравнить 2 даты

Может и брежу но тем не менее

Если Дата>ДатаРассмотрения тогда
ОформлениеСтроки.ЦветФона=Новый Цвет (255,200,200);
КонецЕсли
КонецПроцедуры

: Переменная не определена (Дата)
Если >Дата>ДатаРассмотрения тогда
: Переменная не определена (ДатаРассмотрения)
Если Дата>>ДатаРассмотрения тогда

Так ведь написано - "Переменная не определена.
Где ДатаРассмотрения вычисляется?
Код выше покажи.

Документ.Обращение.Форма.ФормаСписка - тама список какой то.
значится надо брать оттуда текущую строку, и уж с ней работать.

(5) жесть - как на основании этого можно было родить такой вопрос?
(5) этот кусок кода из какого то события вызывается?

Согласен . Есть список документов (обращения) туда ставляем этот код для того что бы если событие выполняется тогда поля окрашиваются в красный цвет
Теперь сделал вот так

Если ДокументСписок.Дата>ДокументСписок.ДатаРассмотрения тогда
ОформлениеСтроки.ЦветФона=Новый Цвет (255,200,200);
КонецЕсли

И тем не меннее
Документ.Обращение.Форма.ФормаСписка(4)>: Поле объекта не обнаружено (Дата)
Если ДокументСписок.Дата>ДокументСписок.ДатаРассмотрения тогда

(12) Сча попробую

(13) : Значение не является значением объектного типа (Дата)
Если ЭлементыФормы.ДокументСписок.ТекущиеДанные.Дата>ЭлементыФормы.ДокументСписок.ТекущиеДанные.ДатаРассмотрения тогда

(15) Ты хочешь, чтоб при открытии формы списка автоматом перекрасились строки? Если да, тогда тебе надо все это впихнуть в событие формы списка "ПриВыводеСтроки"

(16) Я так и сделала но ругается на : Значение не является значением объектного типа (Дата) Не занеш почему?

Я чувствую истина где то рядом может хто подскажет тогда что такое: Значение не является значением объектного типа (Дата)?

Как в Javascript сравнить две даты?

Как их сравнить и определить какая больше, какая меньше вплоть до минут?

  • Вопрос задан более трёх лет назад
  • 34515 просмотров

Комментировать
Решения вопроса 2

SPAHI4

реактовцы - это не девы, а прокидыватели пропсов
Если даты в формате ISO, то

new Date('2011-10-10T14:48:00') > new Date('2011-10-10T10:48:00'); // true

Ответ написан более трёх лет назад
Нравится 2 1 комментарий

так лучше не делать, но если даты одинаковые - они не будет равны, так как сравнение идет по ссылкам. Лучше использовать для сравнения метод .getTime() дат, или библиотеки вроде date-fns

new Date('2016-09-23 22:20') и сравнивайте.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1

riot26

var firstDate = '23.09.2016 22:20'; var secondDate = '01.10.2016 00:00'; var datetime_regex = /(\d\d)\.(\d\d)\.(\d\d\d\d)\s(\d\d):(\d\d)/; var first_date_arr = datetime_regex.exec(firstDate); var first_datetime = new Date(first_date_arr[3], first_date_arr[2], first_date_arr[1], first_date_arr[4], first_date_arr[5]); var second_date_arr = datetime_regex.exec(secondDate); var second_datetime = new Date(second_date_arr[3], second_date_arr[2], second_date_arr[1], second_date_arr[4], second_date_arr[5]); if(first_datetime.getTime() > second_datetime.getTime()) < console.log('первая дата больше'); >else

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *