2015-09-10 58 views
1

我有一個場景,該頁面在特定日期(例如,2015年10月9日)顯示用戶的年齡(30)。現在,在選擇新日期時,我必須預先填寫新日期字段,以及新日期大於給定日期的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

這是從現在起六個月檢查,但我的要求是動態的,必須設置新年齡基於年數差異,然後是去年的月數或天數差。由於我們不能在2016年10月1日設置新的年齡+1,因爲我現在的年齡是30/15/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

哇!這是我正在尋找的。感謝Danilo,感謝你對此的幫助。 –

0

更新和工作代碼。感謝Danilo。

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); 
相關問題