2011-11-22 2 views
0

Можно создать дубликат:
Difference in Months between two dates in JavaScriptКак подсчитать месяц между двумя датами в jQuery?

<input type="text" id="month1" value="11"><input type="text" id="year1" value="1988"> <br /> 
<input type="text" id="month2" value="03"><input type="text" id="year2" value="2010"> <br /> 

<input type="submit" id="show"> 

$("#show").click(function(){ 
    var m1 = $("#month1").val(); 
    var m2 = $("#month2").val(); 
    var y1 = $("#year1").val(); 
    var y2 = $("#year2").val(); 

    var result = 'result'; 
}) 

Прямой эфир: http://jsfiddle.net/4XJUp/

Как лучше и просто способ подсчета месяцев между двумя датами в JQuery в данном примере?

+0

Простейший способ, вероятно, состоит в том, чтобы вычесть один год из другого и умножить на 12. –

+2

Как вы проверяете ввод? Вы считали выбор даты? Разница 1 день в течение того же месяца считается 1 или 0? Разница в 30 дней в течение одного месяца считается 2 или 1 или 0 (так как это более 4 недель и длина самого короткого месяца, за исключением високосного года). – StuperUser

+0

@Grillz Принимая действительные даты, он не учитывает месяцы, независимо от того, находится ли предыдущий месяц во втором поле или наоборот. – StuperUser

ответ

2

Try:

<form onsubmit="monthDiff(this); return false;"> 
    <br>month&nbsp;1<input id="m1" value="1"> 
     year&nbsp;1<input id="y1" value="2010"> 
    <br>month&nbsp;2<input id="m2" value="3"> 
     year&nbsp;2<input id="y2" value="2010"> 
    <br>Difference in months:<input id="diff"> 
    <br><input type="submit"> 
</form> 

<script> 

function monthDiff(f) { 

    f.diff.value = f.y2.value * 12 + Number(f.m2.value) - 
       f.y1.value * 12 - f.m1.value; 
} 

</script> 

Конечно, вы должны подтвердить ввод перед его использованием.

+0

Зачем отвечать на вопрос, который явно является точным обманом? –

+1

Наверное, потому, что быстрее было просто ответить на него, чем искать дубликат. Во всяком случае, я не думаю, что это точный дубликат - он использует Date objets, это использует только строки даты. Наконец, мое решение лучше, чем любое для «дубликата». :-) – RobG

+0

Alex K., KooiInc, Šime Vidas, Donal Fellows, и я не согласен с вами :) –

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