2015-08-16 51 views
2

我有3個人的生日:如何循環瀏覽一年中的剩餘日期並在javascript中查找特定日期?

史蒂夫 - > 5月3

馬克 - > 10月20日

羅賓 - > 12月5日

如何通過一年的剩餘天環和發現哪個人仍然有生日快樂(在這種情況下輸出MARK和ROBBIN)?

我已經能夠獲得今年的剩餘日子,但我不確定如何循環瀏覽當年的剩餘日期 並輸出這些人的姓名(那些將在下一個星期幾個月)。 這是我迄今所做的:

我創建了一個funtion得到remaming天:

function remainingDays(date1, date2) { 
// The number of milliseconds in one day 
var ONE_DAY = 1000 * 60 * 60 * 24 

var date1_ms = date1.getTime() 
var date2_ms = date2.getTime() 

var difference_ms = Math.abs(date1_ms - date2_ms) 

// Convert back to days and return 
return Math.round(difference_ms/ONE_DAY) 
} 

正如你可以看到函數返回剩下的天數。這裏的值:

var current_date = new Date() 

// Store the date of the next New Year's Day 
var new_years_date = new Date() 
new_years_date.setYear(new_years_date.getFullYear() + 1) 
new_years_date.setMonth(0) 
new_years_date.setDate(1) 

// Call the remainingDays function 
var days_left = remainingDays(current_date, new_years_date); 

if (days_left > 1) { 
document.write(days_left + " days left this year") 
} else { 
document.write(days_left + " day left this year") 
} 

請幫助我....謝謝先進!

+0

爲什麼選擇java和C++標籤? – Jens

+0

請不要在問題中添加不相關的標籤。 –

回答

3

什麼這樣的事情? (見jsfiddle):

var birthdays = [ 
    { 
    name: 'Mark', 
    date: 'October 20' 
    }, 
    { 
    name: 'Robbin', 
    date: 'December 5' 
    } 
]; 

var upcoming = birthdays.filter(function(person) { 
    var date = new Date(person.date + ' 2015'); 

    // returns a boolean "true" or "false" 
    return date > new Date(); 
}); 

console.log(upcoming); 

它只是過濾電流生日到一個新的數組,upcoming,如果生日是比今天的日期。無需過度複雜它。

你可以把更多的語義和可擴展的,如果你願意的話:

var upcoming = birthdays.filter(afterToday); 

function afterToday(person) { 
    return new Date(person.date + ' 2015') > new Date(); 
} 

一個編程的關鍵範式的是,越簡單越好。許多算法可以做同樣的事情(最終得到相同的結果),但通常較簡單的算法更好,其他都相同。

換句話說:

  1. 該算法可以通過剩餘一年的每個單日期循環,或

  2. 該算法可以簡單地檢查日期大於今天

我認爲第二個更簡單。此外,更少的代碼行,更可讀。

1

您可以爲每個人一個變量,並檢查他的生日快到了

var Mark = new Date(2015, 9, 20); 
var now = new Date() 

if(Mark > now){ 
doSomething() 
} 
1

不要循環,

計算公曆日期(日期的Julian日期是當天在今年的訂單號,32例如是2月1日的Julian日期,見https://en.wikipedia.org/wiki/Julian_day

再看看當前儒略日是比任何大或變小生日朱連天

+0

根據你的回答中引用的維基百科頁面朱利安日是自公元前4713年朱利安時期開始以來的幾天。這不是從任何一年的1月1日開始的那天的訂單號 –

+0

Ooops,在金融,信用卡行業,他們使用我給他們的時候他們說Julian日期:)的定義:) – bbozo

相關問題