У меня есть две даты, такие как и на сегодняшний день. формат даты, такой как 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 {
}
но это также не работает должным образом.
Просто сравните два объекта Date
перед их преобразованием в строки:
var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
var dateTypeVarto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
if (dateTypeVar > dateTypeVarto) {
...
}
Оператор сравнения автоматически примет значение двух объектов даты через .valueOf()
, что составляет миллисекунды, прошедшие с 1970/01/01 00:00:00.
Вы преобразовываете заданную дату в строку, просто пропустите этот шаг:
var datefrom = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
var dateto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
if (datefrom > dateto) {
alert("Success");
}
else {
}
$( "#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!");});
РЕДАКТИРОВАТЬ
для разного формата вы можете использовать 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!");
Я также использую 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
вы можете заменить поле месяца кодом выше. или вы также можете использовать другой способ.
split
несколько раз на одном и том же объекте / параметрах и не проверяет ошибки. Кроме того, почему бы просто не вернутьto_date.compare(from_date)
и позволить вызывающей стороне решать сравнение, а неto_date.compare(from_date)
его внутри функции