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

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 {

                }

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

Теги:

4 ответа

1

Просто сравните два объекта Date перед их преобразованием в строки:

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

if (dateTypeVar > dateTypeVarto) {
    ...
}

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

1

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

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

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

     }
0
  $( "#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/

РЕДАКТИРОВАТЬ

для разного формата вы можете использовать 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/

-1

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

   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;

}

Это ожидает, что дата вашей даты будет в формате dd//mm/yyyy

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

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

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

  • 1
    Не то чтобы это неправильно как таковое, но оно немного наивно и многословно. Он выполняет split несколько раз на одном и том же объекте / параметрах и не проверяет ошибки. Кроме того, почему бы просто не вернуть to_date.compare(from_date) и позволить вызывающей стороне решать сравнение, а не to_date.compare(from_date) его внутри функции
  • 0
    У меня есть формат даты, как 28 сентября 2013 года. Пожалуйста, предоставьте мне решение относительно этого формата.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню