2014-08-28 55 views
1

這裏我需要一種方法來找出兩個日期之間的星期幾。如果我提供'2014-08-28'和'2014-08-30'兩個日期,則應返回['Friday','Saturday']如何獲得javascript中兩個不同日期之間的星期幾

var d = new Date(); 
var weekday = new Array(7); 
weekday[0]= "Sunday"; 
weekday[1] = "Monday"; 
weekday[2] = "Tuesday"; 
weekday[3] = "Wednesday"; 
weekday[4] = "Thursday"; 
weekday[5] = "Friday"; 
weekday[6] = "Saturday"; 

var n = weekday[d.getDay()]; 

如何使用.getDay()

+1

如果您提供2013-08-28和2014-08-30,那麼如何?它應該返回一個包含367項的數組嗎? – 2014-08-28 13:50:02

+0

但在** 8月28日至30日之間只有一天**。 ;-)您似乎已經知道如何將* date.getDay *轉換爲日期名稱,因此只需逐步增加早期日期並獲取每日的名稱,直至到達最後日期。 – RobG 2014-08-28 13:52:34

+0

@PabloMatíasGomez-我在評論OP,因此沒有@ ...。 – RobG 2014-08-28 13:55:12

回答

0

那麼你需要編寫一些函數,最重要的是,使用Date.parse將日期轉換爲ms並在日期之間進行數學運算。解決方案如下。查看jsFiddle獲取工作代碼。 demo

var days = 3; 
var msPerDay = 1000*60*60*24; 


var nextDay = function (day , dayAfter) { 
    return Date.parse(day) + (msPerDay*dayAfter); 
} 

var daysBetween = function (from, to) { 
    return ((Date.parse(to) - Date.parse(from))/msPerDay) - 1 ; 
} 


var d1 = new Date(); 
var d2 = new Date(nextDay(d1, days)); 

var weekday = new Array(7); 
weekday[0]= "Sunday"; 
weekday[1] = "Monday"; 
weekday[2] = "Tuesday"; 
weekday[3] = "Wednesday"; 
weekday[4] = "Thursday"; 
weekday[5] = "Friday"; 
weekday[6] = "Saturday"; 


var getInbetweenWeekdays = function() { 
    var weekDays = []; 
    for (var i = 0 ; i < daysBetween(d1, d2); i++) { 
     weekDays.push(weekday[new Date(nextDay(d1, i + 1)).getDay()]); 
    } 

    return weekDays; 
} 



alert(getInbetweenWeekdays()); 

細說這一點,添加適當的getter和setter方法你會沒事的,但你的漂移。

+0

哇。這是我的預期。非常感謝.. – user2587222 2014-08-28 16:28:25

+0

一般而言,您將認識到一種功能性方法。 Javascript真的很擅長它。 – 2014-08-28 16:30:54

相關問題