Сравните два формата даты в javascript/jquery
У меня есть следующее:
var fit_start_time = $("#fit_start_time").val(); //2013-09-5
var fit_end_time = $("#fit_end_time").val(); //2013-09-10
if(Date.parse(fit_start_time)>=Date.parse(fit_end_time)){
alert("Please select a different End Date.");
}
Вышеприведенный код не работает. Есть ли другое решение для вышеупомянутого?
дата форматирования согласно Где я могу найти документацию по форматированию даты в JavaScript? также работает для меня.
Ответы
Ответ 1
Это довольно просто:
if(new Date(fit_start_time) <= new Date(fit_end_time))
{//compare end <=, not >=
//your code here
}
Сравнение 2 экземпляров Date
будет работать нормально. Он просто вызовет valueOf
неявно, принуждая экземпляры Date
к целым числам, которые можно сравнить с помощью всех операторов сравнения. Ну, чтобы быть на 100% точным: экземпляры Date
будут принуждаться к типу Number
, поскольку JS не знает о целых числах или поплавках, все они имеют 64-битные номера с плавающей точкой с двойной точностью IEEE 754 с двойной точностью.
Ответ 2
To comapre даты строкового формата (mm-dd-yyyy).
var job_start_date = "10-1-2014"; // Oct 1, 2014
var job_end_date = "11-1-2014"; // Nov 1, 2014
job_start_date = job_start_date.split('-');
job_end_date = job_end_date.split('-');
var new_start_date = new Date(job_start_date[2],job_start_date[0],job_start_date[1]);
var new_end_date = new Date(job_end_date[2],job_end_date[0],job_end_date[1]);
if(new_end_date <= new_start_date) {
// your code
}
Ответ 3
Как и в вашем примере, fit_start_time
не позднее fit_end_time
.
Попробуйте это наоборот:
var fit_start_time = $("#fit_start_time").val(); //2013-09-5
var fit_end_time = $("#fit_end_time").val(); //2013-09-10
if(Date.parse(fit_start_time) <= Date.parse(fit_end_time)){
alert("Please select a different End Date.");
}
Обновить
Ваш код подразумевает, что вы хотите видеть alert
с текущими переменными, которые у вас есть. Если это так, то приведенный выше код является правильным. Если вы намерены (в соответствии с подразумеваемым предупреждающим message
), убедитесь, что их переменная fit_start_time
является датой, предшествующей fit_end_time
, тогда ваш исходный код в порядке, но данные, которые вы получаете из jQuery .val()
не правильно разбираются. Это помогло бы, если бы вы дали нам фактический HTML, который выбирает селектор.
Ответ 4
попробуйте с new Date(obj).getTime()
if( new Date(fit_start_time).getTime() > new Date(fit_end_time).getTime() )
{
alert(fit_start_time + " is greater."); // your code
}
else if( new Date(fit_start_time).getTime() < new Date(fit_end_time).getTime() )
{
alert(fit_end_time + " is greater."); // your code
}
else
{
alert("both are same!"); // your code
}
Ответ 5
Это уже в:
Возраст от даты рождения с помощью JQuery
или, альтернативно, вы можете использовать Date.parse(), как в
var date1 = new Date("10/25/2011");
var date2 = new Date("09/03/2010");
var date3 = new Date(Date.parse(date1) - Date.parse(date2));
Ответ 6
Попробуйте другое:
var start_date = $("#fit_start_time").val(); //05-09-2013
var end_date = $("#fit_end_time").val(); //10-09-2013
var format='dd-MM-y';
var result= compareDates(start_date,format,end_date,format);
if(result==1)/// end date is less than start date
{
alert('End date should be greater than Start date');
}
OR:
if(new Date(start_date) >= new Date(end_date))
{
alert('End date should be greater than Start date');
}