2012-02-21 4 views
1
var onemonth = 3; 
var oneyear = 2005; 
var twomonth = 10; 
var twoyear = 2000; 

Как я могу разделить это и сравнить? В этом примере:Сравните годы и месяц с jQuery

var firstdate = onemonth + oneyear; 
var seconddate = twomonth + twoyear; 

if(firstdate < seconddate){ 
alert('error'); 
} 

Как это лучший способ для сравнения два даты, если я только месяц и года?

Прямой эфир: http://jsfiddle.net/26zms/

ответ

3

Что об использовании родного объекта Date, как это?

if (new Date(oneyear, onemonth) < new Date(twoyear, twomonth)){ 
    alert('error'); 
}else{ 
    alert('ok'); 
} 

С вашими переменными он даст «хорошо».

+2

Обычно вам нужно вычитать 1 из 'onemonth' и' twomonth'. Месяцы к объекту Date основаны на нуле. Итак, если вы пройдете '12', год будет увеличиваться на один, а месяц - январь. ** Для этого случая ** это не имеет значения, потому что оба объекта «Date» отправляются один месяц. (Если вы не поняли предыдущую строку: '3 <10' эквивалентно' 3-1 <10-1'). –

+0

Вы правы в обоих точках! Пока 'new Date (2011, 12)' эквивалентно 'new Date (2012, 0)' сравнение безопасно. –

2

сделать то надлежащие сроки;

var firstdate = new Date(oneyear, onemonth - 1, 1); 
var seconddate = new Date(twoyear, twomonth - 1, 1); 

Тогда сравнение справедливо (в отличие от сравнения произвольно созданных целых чисел)

1

acording мне добавить ноль и чем concate строка

var onemonth = 3; 
if(onemonth < 10) 
onemonth = "0" + onemonth; 
var oneyear = 2005; 
var oneyearmonth = oneyear + onemonth; // 200503 
var twomonth = 10; 
if(twomonth < 10) 
twomonth = "0" + twomonth ; 
var twoyear = 2000; 
var twoyearmonth = twoyear + twomonth ; //200010 
if(oneyearmonth < twoyearmonth) 
{ 
    alert("one month and year leass than tow month and year"); 
} 
1

Там нет необходимости использовать Date объект для Это дело. Простая математика достаточна:

  • Разделите месяц на двенадцать.
  • Добавьте это значение в год.
  • Сделайте то же самое для другой даты (ы), и сравнить значения:

Код:

var onemonth = 3; 
var oneyear = 2005; 
var twomonth = 10; 
var twoyear = 2000; 

var year1 = oneyear + onemonth/12; 
var year2 = twoyear + twomonth/12; 
if (year1 < year2) { 
    // error? 
} 
Смежные вопросы