2014-11-25 18 views
-1

我有一個日期數組是這樣的:計算/檢查日期小於110歲的JavaScript

var dateArray = ["1965-12-29", "1902-11-04", "1933-10-21", "1983-10-16"]; 

我想什麼做的是檢查/計算出生元素的每個日期,看看是否年齡僅基於年份小於110歲。如果年齡大於110年(也僅基於年份),那麼我希望將此元素從dateArray中刪除/刪除。

基本上,我所要做的是轉換下面的SQL代碼在JavaScript:

FROM TABLE X 
WHERE TO_CHAR(DOB, 'YYYY') > (TO_CHAR(TO_DATE('2014/09/30', 'YYYY/MM/DD'), 'YYYY') - 110) 

非常感謝。

+0

遍歷數組,創建一個日期對象,做一個比較。 – epascarello 2014-11-25 14:18:29

+0

嗨,感謝您的回覆,您可以幫助比較?謝謝...新的JS – AJR 2014-11-25 14:26:22

回答

0

使用the .getFullYear() method of Date type

for(var i=0;i<dateArray.length;i++) 
{ 
    var now = new Date();// or specify any date you want with new Date("2014/10/15"); 
    var birth = new Date(dateArray[i]); 
    var age = now.getFullYear() - birth.getFullYear(); 
    //then use the age var and test if it's bigger than 110 
} 

應該這樣做。

+1

int與JavaScript? – epascarello 2014-11-25 14:32:56

+0

是的,你是對的!我錯過了。 – 2014-11-25 14:36:28

0

這裏是我會怎麼做:

var dateArray = ["1965-12-29", "1902-11-04", "1933-10-21", "1983-10-16"]; 
dateArray = removeOldPeople(dateArray); 

function removeOldPeople(dateArray){ 
    //looping backwards because I delete items from array in loop 
    for(var i = dateArray.length -1 ; i >=0 ; i--){ 
     var dateString = dateArray[i].split("-"); 
     var year = dateString[0]; 
     var month = parseInt(dateString[1])-1; 
     var day = dateString[2]; 
     var age = calculateAge(day, month, year); 
     if(age >= 110) { 
      dateArray = dateArray.splice(i); 
     } 
    } 
} 

function calculateAge(birthMonth, birthDay, birthYear){ 
    todayDate = new Date(); 
    todayYear = todayDate.getFullYear(); 
    todayMonth = todayDate.getMonth(); 
    todayDay = todayDate.getDate(); 
    age = todayYear - birthYear; 

    if (todayMonth < birthMonth - 1){ 
    age--; 
    } 

    if (birthMonth - 1 == todayMonth && todayDay < birthDay){ 
    age--; 
    } 
    return age; 
} 
+0

Hazaart ...我忘了提及參數日期值會在'2014/09/30'中傳遞,並且基於當年(例如2014),應該計算所有內容。謝謝您的幫助。 – AJR 2014-11-25 14:33:42