2013-09-23 8 views
0

У меня есть две даты, как из, так и на сегодняшний день. формат даты, такой как 28-сен-2013 и 01-сент.-2013. Я хочу сравнить дату и показать сообщение об ошибке. меня использовать этот код,Как сравнить две даты?

 var from = $('#<%= txtFDateEdu.ClientID %>').val(); 
    var to = $('#<%= txtTDateEdu.ClientID %>').val(); 

    var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 
    var dateTypeVarto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 
    $.datepicker.formatDate('dd-mm-yy', dateTypeVar); 

    var datefrom = $.datepicker.formatDate('dd/mm/yyyy', dateTypeVar); 
    var dateto = $.datepicker.formatDate('dd/mm/yyyy', dateTypeVarto); 
     alert(datefrom);  

     if (datefrom > dateto) { 
      alert("Success"); 
      } 
     else { 

     } 

Этот код не работает должным образом. Некоторая проблема возникает в формате даты. Пожалуйста, помогите мне решить проблему формата даты и сравнить дату должным образом. Я также использую этот код.

var from = $('#<%= txtFDateEdu.ClientID %>').val(); 
       var to = $('#<%= txtTDateEdu.ClientID %>').val(;) 

       alert(from); 
       alert(to); 
       var datefrom = new Date(from); 
       var dateto = new Date(to); 
       alert(datefrom); 
       alert(dateto); 
       if (datefrom > dateto) { 
        alwer("Success"); 
       } 
       else { 

       } 

но это также не работает должным образом.

+3

_ «этот код не работает должным образом. Некоторая проблема возникает в формате даты» _ можете ли вы быть немного (читайте: лот) более подробно о том, в чем проблема. – gdoron

+0

да, выпуск в формате date.i имеет формат даты, такой как 28-сент.-2013. я хочу конвертировать дату, чем сравнивать. –

+2

@jitendrakumar: если вы знаете причину, вы должны это исправить. Стараться. – KooiInc

ответ

-1

Я также использую подборщик даты, обычно я использую следующий сценарий.

function compare_dates(valid_to, valid_from){ 
    var splited_to = valid_to.split("-") 
    var to_date_monthfield=splited_to[1]; 
    var to_date_dayfield=splited_to[0]; 
    var to_date_yearfield=splited_to[2]; 
    var to_date = new Date(to_date_yearfield, to_date_monthfield-1, to_date_dayfield); 

    var splited_from = valid_from.split("-"); 
    var from_date_monthfield=splited_from[1]; 
    var from_date_dayfield=splited_from[0]; 
    var from_date_yearfield=splited_from[2]; 
    var from_date = new Date(from_date_yearfield, from_date_monthfield-1, from_date_dayfield); 

    var cur_date = new Date(); 
    if(!(from_date > cur_date.setDate(cur_date.getDate() - 1))){ 
    return false; 
    } 
    if(!(to_date > from_date)){ 
    return false; 
    } 
    return true; 

} 

Это ожидает, что ваша дата дата будет в дд // мм/гггг формате

here я нашел что-то использовать полностью. Вы можете использовать его с моим кодом.

new Date(Date.parse(month_string +" 1, 2012")).getMonth()+1 

вы можете заменить monthfield с выше кодом. или вы также можете использовать способ other.

+1

Не то, чтобы это было * неправильно * как таковое, но оно немного наивно и многословно. Он выполняет 'split' несколько раз на одном и том же объекте/параметрах и не выполняет проверку ошибок. Также почему бы не просто вернуть 'to_date.compare (from_date)' и позволить вызывающему абоненту решить сравнение, а не жестко кодировать его внутри функции – CodingIntrigue

+0

У меня есть формат даты, такой как 28-сент.-2013.please предоставит мне решение относительно этого формата. –

+0

Я изменил свой бит ответа и добавил пару ссылок. Пожалуйста, проверьте это. –

-1
$("#fromdate, #todate").datepicker(); 
    $("button").click(function(){ 
    var f=$("#fromdate").val(); 
    var t=$("#todate").val(); 
    if(new Date(f)>new Date(t)) 
    alert("wrong!"); 
    else alert("right!");}); 

http://jsfiddle.net/Z9cXM/

EDIT

для другой проблемы формата вы можете использовать Date.js

var f = $("#fromdate").val(); 
var t = $("#todate").val(); 
f=Date.parse(f); 
t=Date.parse(t); 
if (f>t) alert("wrong!"); 
else alert("right!"); 

http://jsfiddle.net/Z9cXM/1/

+0

Я также вижу этот код, но формат даты в этом коде 28/01/2013.i имеет формат даты, такой как 28-сентябрь-2013. –

+0

@jitendrakumar, используйте [date.js] (http://www.datejs.com/) просто загрузите и импортируйте его в свой файл, как и любой другой внешний JS! – rps

+0

Спасибо @ rps, решить проблему, используя эту date.js. –

1

преобразуете учитывая дату в строку, просто пропустите этот шаг:

var datefrom = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 
var dateto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 

    if (datefrom > dateto) { 
     alert("Success"); 
     } 
    else { 

    } 
1

Просто сравнить два Date объекты на до того вы превратили их в строки:

var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 
var dateTypeVarto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate'); 

if (dateTypeVar > dateTypeVarto) { 
    ... 
} 

Оператор сравнения автоматически принимает значение из двух объектов даты через .valueOf(), то есть миллисекунды, прошедшие с 1970/01/01 00:00:00.

Смежные вопросы