2015-09-10 2 views
1

У меня есть сценарий, что страница отображает возраст пользователя (30) в конкретную дату (пример, 09/10/2015). Теперь, когда вы выбираете новую дату, я должен предварительно заполнить поле нового возраста бизнес-логикой, когда новая дата больше 6 месяцев/182 дня (пример 03/11/2016) с указанной даты, тогда возраст должен быть +1 (пример возраст будет 31).Получите новый возраст на определенную дату через jQuery/javascript

Я знаю, что мы можем достичь этого, выполнив следующий код. Но я ищу оптимальный способ получения нового возраста при выборе новой даты.

var newDate = $("#NewDate").val(); 
if (newDate != null && newDate != '') { 
    var currDCD = new Date($("#CurrentDate").val()); 
    var newDCD = new Date(newDate); 
    var yearsDiff = newDCD.getFullYear() - currDCD.getFullYear(); 
    var day = 1000 * 60 * 60 * 24; 
    //Get last years days difference 
    var daysDiff = Math.floor((newDCD.setFullYear(currDCD.getFullYear() + (yearsDiff - 1)) - currDCD)/day); 
    var currAge = parseInt($("#CurrentAge").val()); 

    //Set new owner age 
    $("#NewAge").val(currAge + (daysDiff > 182 ? yearsDiff : yearsDiff-1)); 
} 
+0

Вы пробовали что-то похожее на это? var newDate = new Date ($ ("# NewDate"). val()); var sixMonthsFromNow = new Date (newDate .setMonth (newDate .getMonth() - 6)); то просто сравните две даты. Кредит отправляется на это сообщение: http://stackoverflow.com/questions/23883749/get-last-6-months-from-in-jquery – NKD

+0

Это проверка на шесть месяцев, но мое требование является динамическим и требует установки новый возраст, основанный на разнице в годах, а затем на разнице между месяцами или днями в прошлом году. Поскольку мы не можем установить новый возраст +1 на дату 01/10/2016, когда мой текущий возраст составляет 30 в 12/31/2015. –

+0

Вы можете использовать momentJS, в любое время, когда я приближаюсь к дате времени в JS. Я пользуюсь этой библиотекой http://momentjs.com/ – bUKaneer

ответ

1

Что-то, как это должно дать вам возраст округляется вниз или вверх в зависимости от месяца:

function getAge(birthday) { 
    var diff = new Date(new Date() - new Date(birthday)) 
    return diff.getFullYear() - 1970 + (diff.getMonth()>=6?1:0) 
} 

где день рождения что-нибудь, что может быть использовано в конструкторах из Date

+0

Вау! это то, что я искал. Спасибо Данило, оцените вашу помощь по этому поводу. –

0

Обновлено и рабочий код. Спасибо Данило.

var newDate = $("#NewDate").val(); 
if (newDate != null && newDate != '') { 
    var currDCD = new Date($("#CurrentDate").val()); 
    var newDCD = new Date(newDate); 
    var diff = new Date(newDCD - currDCD); 
    var ageDiff = diff.getFullYear() - 1970 + (diff.getMonth() >= 6 ? 1 : 0); 
    var currAge = parseInt($("#CurrentOwnerAge").val()); 
    $("#NewAge").val(currAge + ageDiff); 
Смежные вопросы