Сравните две даты с JavaScript

Может ли кто-нибудь предложить способ сравнить значения двух дат больше, чем, а не в прошлом, используя JavaScript? Значения будут поступать из текстовых полей ...

вопрос задан 29.01.2009
Alex
11427 репутация

35 ответов


  • 1613 рейтинг

    Объект Date будет делать то, что вы хотите - построить по одному для каждой даты, а затем сравнить их с помощью > , < , <= или >= .

    Операторы == , != , === и !== требуют, чтобы вы использовали date.getTime() как в

     var d1 = new Date();
    var d2 = new Date(d1);
    var same = d1.getTime() === d2.getTime();
    var notSame = d1.getTime() !== d2.getTime();
     

    быть ясным, просто проверка на равенство непосредственно с объектами данных не будет работать

     < 

    Я предлагаю вам использовать выпадающие списки или какую-либо подобную ограниченную форму ввода даты, а не текстовые поля, однако, чтобы вы не оказались в адвентировании ввода.

    ответ дан moonshadow, с репутацией 56323, 29.01.2009
  • 376 рейтинг

    Самый простой способ сравнить даты в javascript - сначала преобразовать его в объект Date, а затем сравнить эти объекты даты.

    Ниже вы найдете объект с тремя функциями:

    • dates.compare (а, б)

      Возвращает число:

      • -1, если a <b
      • 0, если a = b
      • 1, если a> b
      • NaN, если a или b является незаконной датой
    • date.inRange (d, начало, конец)

      Возвращает логическое значение или NaN:

      • true, если d находится между началом и концом (включительно)
      • false, если d перед запуском или после завершения .
      • NaN, если одна или несколько дат являются незаконными.
    • dates.convert

      Используется другими функциями для преобразования их ввода в объект даты. Вход может быть

      • date- object: вход возвращается как есть.
      • массив : интерпретируется как [год, месяц, день]. ПРИМЕЧАНИЕ: месяц - 0-11.
      • число : Интерпретируется как количество миллисекунд с 1 января 1970 года (временная метка)
      • строка : поддерживается несколько различных форматов, например «ГГГГ / ММ / ДД», «ММ / ДД / ГГГГ», «31 января 2009 года» и т. д.
      • объект : интерпретируется как объект с атрибутами года, месяца и даты. ПРИМЕЧАНИЕ: месяц - 0-11.

    ,

     // Source: http://stackoverflow.com/questions/497790
    var dates = {
        convert:function(d) {
            // Converts the date in d to a date-object. The input can be:
            //   a date object: returned without modification
            //  an array      : Interpreted as [year,month,day]. NOTE: month is 0-11.
            //   a number     : Interpreted as number of milliseconds
            //                  since 1 Jan 1970 (a timestamp) 
            //   a string     : Any format supported by the javascript engine, like
            //                  "YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc.
            //  an object     : Interpreted as an object with year, month and date
            //                  attributes.  **NOTE** month is 0-11.
            return (
                d.constructor === Date ? d :
                d.constructor === Array ? new Date(d[0],d[1],d[2]) :
                d.constructor === Number ? new Date(d) :
                d.constructor === String ? new Date(d) :
                typeof d === "object" ? new Date(d.year,d.month,d.date) :
                NaN
            );
        },
        compare:function(a,b) {
            // Compare two dates (could be of any type supported by the convert
            // function above) and returns:
            //  -1 : if a < b
            //   0 : if a = b
            //   1 : if a > b
            // NaN : if a or b is an illegal date
            // NOTE: The code inside isFinite does an assignment (=).
            return (
                isFinite(a=this.convert(a).valueOf()) &&
                isFinite(b=this.convert(b).valueOf()) ?
                (a>b)-(a<b) :
                NaN
            );
        },
        inRange:function(d,start,end) {
            // Checks if date in d is between dates in start and end.
            // Returns a boolean or NaN:
            //    true  : if d is between start and end (inclusive)
            //    false : if d is before start or after end
            //    NaN   : if one or more of the dates is illegal.
            // NOTE: The code inside isFinite does an assignment (=).
           return (
                isFinite(d=this.convert(d).valueOf()) &&
                isFinite(start=this.convert(start).valueOf()) &&
                isFinite(end=this.convert(end).valueOf()) ?
                start <= d && d <= end :
                NaN
            );
        }
    }
     
    ответ дан some, с репутацией 34363, 31.01.2009
  • 227 рейтинг

    Сравните < и > как обычно, но все, что связано с = должно использовать префикс + . Вот так:

     var x = new Date('2013-05-23');
    var y = new Date('2013-05-23');
    
    // less than, greater than is fine:
    x < y; => false
    x > y; => false
    x === y; => false, oops!
    
    // anything involving '=' should use the '+' prefix
    // it will then compare the dates' millisecond values
    +x <= +y;  => true
    +x >= +y;  => true
    +x === +y; => true
     

    Надеюсь это поможет!

    ответ дан Daniel Lidström, с репутацией 6047, 23.05.2013
  • 124 рейтинг

    Реляционные операторы < <= > >= могут использоваться для сравнения дат JavaScript:

     var d1 = new Date(2013, 0, 1);
    var d2 = new Date(2013, 0, 2);
    d1 <  d2; // true
    d1 <= d2; // true
    d1 >  d2; // false
    d1 >= d2; // false
     

    Однако операторы равенства == != === !== не могут использоваться для сравнения (значения) дат, потому что :

    • Два разных объекта никогда не равны ни для строгих, ни для абстрактных сравнений.
    • Выражение, сравнивающее объекты, истинно, только если операнды ссылаются на один и тот же объект.

    Вы можете сравнить значение дат равенства, используя любой из этих методов:

     var d1 = new Date(2013, 0, 1);
    var d2 = new Date(2013, 0, 1);
    /*
     * note: d1 == d2 returns false as described above
     */
    d1.getTime() == d2.getTime(); // true
    d1.valueOf() == d2.valueOf(); // true
    Number(d1)   == Number(d2);   // true
    +d1          == +d2;          // true
     

    Как <= и <= возвращают число миллисекунд с 1 января 1970 года, 00:00 по UTC. Оба <= оператора функции и унарного <= вызовут <= методов за кулисами.

    ответ дан Salman A, с репутацией 165526, 31.01.2013
  • 64 рейтинг

    Самый простой способ - вычесть одну дату из другой и сравнить результат.

     var oDateOne = new Date();
    var oDateTwo = new Date();
    
    alert(oDateOne - oDateTwo === 0);
    alert(oDateOne - oDateTwo < 0);
    alert(oDateOne - oDateTwo > 0);
     
    ответ дан Peter Wilkinson, с репутацией 4013, 1.11.2011
  • 34 рейтинг

    Сравнение дат в JavaScript довольно просто ... JavaScript имеет встроенную систему сравнения для дат, которая позволяет легко сравнивать.

    Просто выполните следующие шаги для сравнения 2 значений даты, например, у вас есть 2 входа, каждый из которых имеет значение даты в String и вы можете сравнить их ...

    1. У вас есть 2 строковых значения, которые вы получаете от ввода, и вы хотели бы их сравнить, они приведены ниже:

     var date1 = '01/12/2018';
    var date2 = '12/12/2018';
     

    2. Они должны быть Date Object чтобы быть сопоставлены как значения даты, поэтому просто преобразуйте их на сегодняшний день, используя new Date() , я просто переписываю их для простоты объяснений, но вы можете сделать это в любом случае:

     date1 = new Date(date1);
    date2 = new Date(date2);
     

    3. Теперь просто сравните их, используя > < >= <=

     date1 > date2;  //false
    date1 < date2;  //true
    date1 >= date2; //false
    date1 <= date2; //true
     

    сравнить даты в javascript

    ответ дан Alireza, с репутацией 39782, 11.07.2017
  • 30 рейтинг

    Сравните только день (игнорируя компонент времени):

     Date.prototype.sameDay = function(d) {
      return this.getFullYear() === d.getFullYear()
        && this.getDate() === d.getDate()
        && this.getMonth() === d.getMonth();
    }
     

    Применение:

     if(date1.sameDay(date2)) {
        // highlight day on calendar or something else clever
    }
     
    ответ дан mpen, с репутацией 117292, 27.09.2013
  • 25 рейтинг

    какой формат?

    Если вы создаете объект Date Javascript, вы можете просто вычесть их, чтобы получить разницу в миллисекундах (отредактируйте или просто сравните их):

     js>t1 = new Date()
    Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time)
    js>t2 = new Date()
    Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time)
    js>t2-t1
    2672
    js>t3 = new Date('2009 Jan 1')
    Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time)
    js>t1-t3
    2470768442
    js>t1>t3
    true
     
    ответ дан Jason S, с репутацией 104096, 29.01.2009
  • 14 рейтинг

    КОРОТКИЙ ОТВЕТ

    Вот функция, возвращающая {boolean}, если от dateTime> до dateTime Demo в действии

     var from = '08/19/2013 00:00'
    var to = '08/12/2013 00:00 '
    
    function isFromBiggerThanTo(dtmfrom, dtmto){
       return new Date(dtmfrom).getTime() >=  new Date(dtmto).getTime() ;
    }
    console.log(isFromBiggerThanTo(from, to)); //true
     

    объяснение

    jsFiddle

     var date_one = '2013-07-29 01:50:00',
    date_two = '2013-07-29 02:50:00';
    //getTime() returns the number of milliseconds since 01.01.1970.
    var timeStamp_date_one = new Date(date_one).getTime() ; //1375077000000 
    console.log(typeof timeStamp_date_one);//number 
    var timeStamp_date_two = new Date(date_two).getTime() ;//1375080600000 
    console.log(typeof timeStamp_date_two);//number 
     

    поскольку теперь у вас есть как datetime в типе числа, вы можете сравнить их с любыми операциями сравнения

    (>, <, =,! =, ==,! ==,> = AND <=)

    затем

    если вы знакомы с C# настраиваемыми строками даты и времени, эта библиотека должна делать то же самое и помогать вам форматировать дату и время dtmFRM независимо от того, проходите ли вы в строке времени даты или в формате unix

    Применение

     var myDateTime = new dtmFRM();
    
    alert(myDateTime.ToString(1375077000000, "MM/dd/yyyy hh:mm:ss ampm"));
    //07/29/2013 01:50:00 AM
    
    alert(myDateTime.ToString(1375077000000,"the year is yyyy and the day is dddd"));
    //this year is 2013 and the day is Monday
    
    alert(myDateTime.ToString('1/21/2014', "this month is MMMM and the day is dd"));
    //this month is january and the day is 21
     

    DEMO

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

    ответ дан Mina Gabriel, с репутацией 9234, 2.08.2013
  • 13 рейтинг
    function datesEqual(a, b)
    {
       return (!(a>b || b>a))
    }
    
    ответ дан does_not_exist, с репутацией , 20.07.2009
  • 13 рейтинг

    вы используете этот код,

     var firstValue = "2012-05-12".split('-');
    var secondValue = "2014-07-12".split('-');
    
     var firstDate=new Date();
     firstDate.setFullYear(firstValue[0],(firstValue[1] - 1 ),firstValue[2]);
    
     var secondDate=new Date();
     secondDate.setFullYear(secondValue[0],(secondValue[1] - 1 ),secondValue[2]);     
    
      if (firstDate > secondDate)
      {
       alert("First Date  is greater than Second Date");
      }
     else
      {
        alert("Second Date  is greater than First Date");
      }
     

    А также проверьте эту ссылку http://www.w3schools.com/js/js_obj_date.asp

    ответ дан stay_hungry, с репутацией 1212, 9.08.2012
  • 12 рейтинг
    var date = new Date(); // will give you todays date.
    
    // following calls, will let you set new dates.
    setDate()   
    setFullYear()   
    setHours()  
    setMilliseconds()   
    setMinutes()    
    setMonth()  
    setSeconds()    
    setTime()
    
    var yesterday = new Date();
    yesterday.setDate(...date info here);
    
    if(date>yesterday)  // will compare dates
    
    ответ дан Paul Woolcock, с репутацией 7041, 29.01.2009
  • 10 рейтинг

    Чтобы добавить еще одну возможность для многих существующих опций, вы можете попробовать:

     if (date1.valueOf()==date2.valueOf()) .....
     

    ... который, похоже, работает на меня. Конечно, вам нужно убедиться, что обе даты не определены.

     if ((date1?date1.valueOf():0)==(date2?date2.valueOf():0) .....
     

    Таким образом, мы можем гарантировать, что будет сделано положительное сравнение, если оба они не определены, или ...

     if ((date1?date1.valueOf():0)==(date2?date2.valueOf():-1) .....
     

    ... если вы предпочитаете, чтобы они не были равны.

    ответ дан Paul, с репутацией 3229, 26.03.2014
  • 10 рейтинг

    Примечание - Сравнить только Дата:

    Когда мы сравниваем две даты в javascript. Требуется также несколько часов, минут и секунд. Итак, если нам нужно только сравнить дату, это подход:

     var date1= new Date("01/01/2014").setHours(0,0,0,0);
    
    var date2= new Date("01/01/2014").setHours(0,0,0,0);
     

    Теперь: if date1.valueOf()> date2.valueOf() будет работать как шарм.

    ответ дан Sanjeev Singh, с репутацией 2602, 14.03.2017
  • 9 рейтинг

    Через Moment.js

    Jsfiddle: http://jsfiddle.net/guhokemk/1/

     function compare(dateTimeA, dateTimeB) {
        var momentA = moment(dateTimeA,"DD/MM/YYYY");
        var momentB = moment(dateTimeB,"DD/MM/YYYY");
        if (momentA > momentB) return 1;
        else if (momentA < momentB) return -1;
        else return 0;
    }
    
    alert(compare("11/07/2015", "10/07/2015"));
     

    Метод возвращает 1, если dateTimeA больше dateTimeB

    Метод возвращает 0, если dateTimeA равно dateTimeB

    Метод возвращает -1, если dateTimeA меньше dateTimeB

    ответ дан Razan Paul, с репутацией 8355, 5.07.2016
  • 8 рейтинг

    Чтобы сравнить две даты, мы можем использовать библиотеку JavaScript date.js, которую можно найти по адресу: https://code.google.com/archive/p/datejs/downloads

    и используйте метод Date.compare( Date date1, Date date2 ) и он возвращает число, которое означает следующий результат:

    -1 = date1 - это дата дня2.

    0 = значения равны.

    1 = дата1 больше, чем дата2.

    ответ дан Salahin Rocky, с репутацией 182, 31.08.2016
  • 7 рейтинг

    Чтобы создать даты из свободного текста в Javascript, вам нужно проанализировать его в объекте Date ().

    Вы можете использовать Date.parse (), который принимает бесплатные текстовые попытки, чтобы преобразовать его в новую дату, но если у вас есть контроль над страницей, я бы рекомендовал вместо этого использовать поля выбора HTML или выбор даты, такие как элемент управления календарем YUI или пользовательский интерфейс jQuery Datepicker .

    После того, как вы указали дату, которую указали другие люди, вы можете использовать простую арифметику, чтобы вычесть даты и преобразовать их обратно в несколько дней, разделив число (в секундах) на количество секунд в день (60 * 60 * 24 = 86400).

    ответ дан sh1mmer, с репутацией 1111, 29.01.2009
  • 7 рейтинг

    Вычтите две даты получить разницу в миллисекундах, если вы получите 0 это одна и та же дата

     function areSameDate(d1, d2){
        return d1 - d2 === 0
    }
     
    ответ дан Yukulélé, с репутацией 5084, 15.11.2012
  • 7 рейтинг

    Скажем, у вас есть объекты даты A и B, получить их значение времени EPOC, а затем вычесть, чтобы получить разницу в миллисекундах.

     var diff = +A - +B;
     

    Это все.

    ответ дан foobar, с репутацией 3528, 23.07.2011
  • 6 рейтинг
    var date_today=new Date();
    var formated_date = formatDate(date_today);//Calling formatDate Function
    
    var input_date="2015/04/22 11:12 AM";
    
    var currentDateTime = new Date(Date.parse(formated_date));
    var inputDateTime   = new Date(Date.parse(input_date));
    
    if (inputDateTime <= currentDateTime){
        //Do something...
    }
    
    function formatDate(date) {
        var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'PM' : 'AM';
    
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        hours   = hours < 10 ? '0'+hours : hours ;
    
        minutes = minutes < 10 ? '0'+minutes : minutes;
    
        var strTime = hours+":"+minutes+ ' ' + ampm;
        return  date.getFullYear()+ "/" + ((date.getMonth()+1) < 10 ? "0"+(date.getMonth()+1) :
        (date.getMonth()+1) ) + "/" + (date.getDate() < 10 ? "0"+date.getDate() :
        date.getDate()) + " " + strTime;
    }
    
    ответ дан vickisys, с репутацией 1291, 6.05.2015
  • 5 рейтинг

    Улучшенная версия кода, размещенная "некоторыми"

     /* Compare the current date against another date.
     *
     * @param b  {Date} the other date
     * @returns   -1 : if this < b
     *             0 : if this === b
     *             1 : if this > b
     *            NaN : if a or b is an illegal date
    */ 
    Date.prototype.compare = function(b) {
      if (b.constructor !== Date) {
        throw "invalid_date";
      }
    
     return (isFinite(this.valueOf()) && isFinite(b.valueOf()) ? 
              (this>b)-(this<b) : NaN 
            );
    };
     

    Применение:

       var a = new Date(2011, 1-1, 1);
      var b = new Date(2011, 1-1, 1);
      var c = new Date(2011, 1-1, 31);
      var d = new Date(2011, 1-1, 31);
    
      assertEquals( 0, a.compare(b));
      assertEquals( 0, b.compare(a));
      assertEquals(-1, a.compare(c));
      assertEquals( 1, c.compare(a));
     
    ответ дан Rodrigo Pinho Pereira de Souza, с репутацией 406, 20.08.2011
  • 4 рейтинг

    Обычно я храню Dates как timestamps(Number) в базах данных.

    Когда мне нужно сравнивать, я просто сравниваю эти временные метки или

    преобразуйте его в объект Date, а затем сравните с > < если необходимо.

    Обратите внимание, что == или === не работает должным образом, если ваши переменные не являются ссылками одного и того же объекта Date.

    Сначала конвертируйте эти объекты Date в метку времени (число), а затем сравните их равенство.


    Дата для отметки времени

     var timestamp_1970 = new Date(0).getTime(); // 1970-01-01 00:00:00
    var timestamp = new Date().getTime(); // Current Timestamp
     

    Отметка времени до даты

     var timestamp = 0; // 1970-01-01 00:00:00
    var DateObject = new Date(timestamp);
     
    ответ дан InspiredJW, с репутацией 5212, 22.08.2012
  • 4 рейтинг

    Если следующий формат даты, вы можете использовать этот код:

     var first = '2012-11-21';
    var second = '2012-11-03';
    if(parseInt(first.replace(/-/g,""),10) > parseInt(second.replace(/-/g,""),10)){
       //...
    }
     

    Он будет проверять, 20121121 ли номер больше 20121103 или нет.

    ответ дан totten, с репутацией 1328, 23.06.2012
  • 4 рейтинг

    ОЖИДАЙТЕ ВРЕМЯ

    Дата javascript не имеет понятия о часовом поясе . Это момент времени (тики с эпохи) с удобными функциями для перевода в строки и из строк в «локальном» часовом поясе. Если вы хотите работать с датами с использованием объектов даты, как все здесь делают, вы хотите , чтобы ваши даты представляли собой полуночи UTC в начале указанной даты. Это обычное и необходимое соглашение, которое позволяет работать с датами независимо от сезона или часового пояса их создания. Поэтому вам нужно быть очень бдительными, чтобы управлять понятием часового пояса, особенно когда вы создаете свой полуночный объект UTC Date.

    В большинстве случаев вы хотите, чтобы ваша дата отражала часовой пояс пользователя. Нажмите, если сегодня ваш день рождения . Пользователи в Новой Зеландии и США щелкают одновременно и получают разные даты. В этом случае сделайте это ...

     // create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
    new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));
     

    Иногда международная сопоставимость превосходит локальную точность. В этом случае сделайте это ...

     // the date in London of a moment in time. Device timezone is ignored.
    new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));
     

    Теперь вы можете напрямую сравнить свои объекты даты, как предлагают другие ответы.

    Позаботившись управлять часовым поясом, когда вы создаете, вы также должны быть уверены, что оставите Часовой пояс при преобразовании обратно в строковое представление. Таким образом, вы можете безопасно использовать ...

    • 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()
    ответ дан bbsimonbb, с репутацией 8125, 20.10.2017
  • 2 рейтинг

    Прежде чем сравнивать объект Dates , попробуйте установить обе их миллисекунды на ноль, как Date.setMilliseconds(0); .

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

    ответ дан Júlio Paulillo, с репутацией 506, 24.10.2013
  • 1 рейтинг
             from_date ='10-07-2012';
            to_date = '05-05-2012';
            var fromdate = from_date.split('-');
            from_date = new Date();
            from_date.setFullYear(fromdate[2],fromdate[1]-1,fromdate[0]);
            var todate = to_date.split('-');
            to_date = new Date();
            to_date.setFullYear(todate[2],todate[1]-1,todate[0]);
            if (from_date > to_date ) 
            {
                alert("Invalid Date Range!\nStart Date cannot be after End Date!")
    
                return false;
            }
     

    Используйте этот код для сравнения даты с помощью javascript.

    Спасибо D.Jeeva

    ответ дан Jeeva, с репутацией 82, 10.07.2012
  • 1 рейтинг

    Другой способ сравнения двух дат - через метод toISOString() . Это особенно полезно при сравнении с фиксированной датой, хранящейся в строке, поскольку вы можете избежать создания недолговечного объекта. В силу формата ISO 8601 вы можете сравнить эти строки лексикографически (по крайней мере, когда вы используете один и тот же часовой пояс).

    Я не обязательно говорю, что это лучше, чем использование временных объектов или временных меток; просто предлагая это как еще один вариант. Там могут быть крайние случаи, когда это может потерпеть неудачу, но я еще не наткнулся на них :)

    ответ дан yoniLavi, с репутацией 1306, 9.11.2016
  • 1 рейтинг
    var curDate=new Date();
    var startDate=document.forms[0].m_strStartDate;
    
    var endDate=document.forms[0].m_strEndDate;
    var startDateVal=startDate.value.split('-');
    var endDateVal=endDate.value.split('-');
    var firstDate=new Date();
    firstDate.setFullYear(startDateVal[2], (startDateVal[1] - 1), startDateVal[0]);
    
    var secondDate=new Date();
    secondDate.setFullYear(endDateVal[2], (endDateVal[1] - 1), endDateVal[0]);
    if(firstDate > curDate) {
        alert("Start date cannot be greater than current date!");
        return false;
    }
    if (firstDate > secondDate) {
        alert("Start date cannot be greater!");
        return false;
    }
    
    ответ дан user1931504, с репутацией 11, 12.02.2013
  • 1 рейтинг

    Вот что я сделал в одном из моих проектов,

     function CompareDate(tform){
         var startDate = new Date(document.getElementById("START_DATE").value.substring(0,10));
         var endDate = new Date(document.getElementById("END_DATE").value.substring(0,10));
    
         if(tform.START_DATE.value!=""){
             var estStartDate = tform.START_DATE.value;
             //format for Oracle
             tform.START_DATE.value = estStartDate + " 00:00:00";
         }
    
         if(tform.END_DATE.value!=""){
             var estEndDate = tform.END_DATE.value;
             //format for Oracle
             tform.END_DATE.value = estEndDate + " 00:00:00";
         }
    
         if(endDate <= startDate){
             alert("End date cannot be smaller than or equal to Start date, please review you selection.");
             tform.START_DATE.value = document.getElementById("START_DATE").value.substring(0,10);
             tform.END_DATE.value = document.getElementById("END_DATE").value.substring(0,10);
             return false;
         }
    }
     

    называющийся это сверху форма onsubmit. надеюсь это поможет.

    ответ дан Brijesh, с репутацией 54, 20.09.2013
  • 1 рейтинг

    Привет. Вот мой код для сравнения дат. В моем случае я делаю чек, чтобы не выбирать выбранные даты.

     var myPickupDate = <pick up date> ;
    var isPastPickupDateSelected = false;
    var currentDate = new Date();
    
    if(currentDate.getFullYear() <= myPickupDate.getFullYear()){
        if(currentDate.getMonth()+1 <= myPickupDate.getMonth()+1 || currentDate.getFullYear() < myPickupDate.getFullYear()){
                            if(currentDate.getDate() <= myPickupDate.getDate() || currentDate.getMonth()+1 < myPickupDate.getMonth()+1 || currentDate.getFullYear() < myPickupDate.getFullYear()){
                                                isPastPickupDateSelected = false;
                                                return;
                                            }
                        }
    }
    console.log("cannot select past pickup date");
    isPastPickupDateSelected = true;
     
    ответ дан Qasim, с репутацией 1557, 8.04.2016
  • 1 рейтинг

    Предположим, что вы имеете дело с этим 2014[:-/.]06[:-/.]06 или этим 06[:-/.]06[:-/.]2014 форматом даты, тогда вы можете сравнить даты таким образом

     var a = '2014.06/07', b = '2014-06.07', c = '07-06/2014', d = '07/06.2014';
    
    parseInt(a.replace(/[:\s\/\.-]/g, '')) == parseInt(b.replace(/[:\s\/\.-]/g, '')); // true
    parseInt(c.replace(/[:\s\/\.-]/g, '')) == parseInt(d.replace(/[:\s\/\.-]/g, '')); // true
    parseInt(a.replace(/[:\s\/\.-]/g, '')) < parseInt(b.replace(/[:\s\/\.-]/g, '')); // false
    parseInt(c.replace(/[:\s\/\.-]/g, '')) > parseInt(d.replace(/[:\s\/\.-]/g, '')); // false
     

    Как вы можете видеть, мы разделим разделители (разделители), а затем сравниваем целые числа.

    ответ дан hex494D49, с репутацией 6219, 23.06.2014
  • 0 рейтинг

    попробуйте это, в то время как дата сравнения должна быть iso format "yyyy-MM-dd", если вы хотите сравнить только даты, используйте этот datehelper

     <a href="https://plnkr.co/edit/9N8ZcC?p=preview"> Live Demo</a>
     
    ответ дан user4439128, с репутацией 31, 15.06.2017
  • 0 рейтинг

    Вы можете сравнить дату, как самый простой и понятный способ.

     <input type="date" id="getdate1" />
    <input type="date" id="getdate2" />
     

    предположим, что у вас есть два ввода даты, которые вы хотите сравнить.

    поэтому сначала напишите общий метод для анализа даты.

      <script type="text/javascript">
                function parseDate(input) {
                 var datecomp= input.split('.'); //if date format 21.09.2017
    
                  var tparts=timecomp.split(':');//if time also giving
                  return new Date(dparts[2], dparts[1]-1, dparts[0], tparts[0], tparts[1]);
    // here new date(  year, month, date,)
                }
            </script>
     

    parseDate () - это общий метод для разбора даты. теперь вы можете проверить свою дату =,>, <любой тип сравнения

         <script type="text/javascript">
    
                  $(document).ready(function(){
                  //parseDate(pass in this method date);
                        Var Date1=parseDate($("#getdate1").val());
                            Var Date2=parseDate($("#getdate2").val());
                   //use any oe < or > or = as per ur requirment 
                   if(Date1 = Date2){
             return false;  //or your code {}
    }
     });
        </script>
     

    Для этого этот код вам поможет.

    ответ дан Bachas, с репутацией 61, 20.09.2017
  • -2 рейтинг

    Попробуйте использовать этот код

     var f =date1.split("/");
    
    var t =date2.split("/");
    
    var x =parseInt(f[2]+f[1]+f[0]);
    
    var y =parseInt(t[2]+t[1]+t[0]);
    
    if(x > y){
        alert("date1 is after date2");
    }
    
    else if(x < y){
        alert("date1 is before date2");
    }
    
    else{
        alert("both date are same");
    }
     
    ответ дан iinvole, с репутацией 1, 30.01.2014
  • -5 рейтинг

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

     var str1  = document.getElementById("Fromdate").value;
    var str2  = document.getElementById("Todate").value;
    var dt1   = parseInt(str1.substring(0,2),10); 
    var mon1  = parseInt(str1.substring(3,5),10);
    var yr1   = parseInt(str1.substring(6,10),10); 
    var dt2   = parseInt(str2.substring(0,2),10); 
    var mon2  = parseInt(str2.substring(3,5),10); 
    var yr2   = parseInt(str2.substring(6,10),10); 
    var date1 = new Date(yr1, mon1, dt1); 
    var date2 = new Date(yr2, mon2, dt2); 
    
    if(date2 < date1)
    {
       alert("To date cannot be greater than from date");
       return false; 
    } 
    else 
    { 
       alert("Submitting ...");
       document.form1.submit(); 
    } 
     
    ответ дан Pravesh Hajela, с репутацией 1, 16.04.2011