2012-10-14 52 views
1

我正在嘗試查找基於單一日期形成整個星期的所有日期。從日期獲取整整一週

因此,如果日期位於星期三的中間位置,它將返回星期日星期一至星期六。

下面是一個例子:

所以我們可以說我有週三2012年10月10日

我會通過這個日期對象的函數和函數將返回['2012-10-07', '2012-10-08', '2012-10-09', '2012-10-10', '2012-10-11', '2012-10-12', '2012-10-13'](我不想字符串,但日期對象,字符串是有公正的例子^^

我已經嘗試過自己,但我創建的方法是很長,啞,這裏是反正:?!https://gist.github.com/3889121

但是我primarly這裏尋找是說明使用什麼,有沒有更簡單的方法

感謝

回答

2

下面是從第一星期天返回日期實例數組功能在給定日期之前,直到下一個星期日:

function getWeek(fromDate){ 
var sunday = new Date(fromDate.setDate(fromDate.getDate()-fromDate.getDay())) 
    ,result = [new Date(sunday)]; 
while (sunday.setDate(sunday.getDate()+1) && sunday.getDay()!==0) { 
    result.push(new Date(sunday)); 
} 
return result; 
} 
// usage 
var week = getWeek(new Date('2012/10/10')); 
console.log(week[0]); //=> Sun Oct 07 2012 00:00:00 
console.log(week[6]); //=> Sat Oct 13 2012 00:00:00 

只是爲了好玩,更短的版本(一oneliner)使用Array.map,爲的Date.prototype

Date.prototype.getWeek = function(){ 
return [new Date(this.setDate(this.getDate()-this.getDay()))] 
      .concat(
      String(Array(6)).split(',') 
       .map (function(){ 
         return new Date(this.setDate(this.getDate()+1)); 
        }, this) 
     ); 
} 
// usage 
new Date('2012/10/10').getWeek(); //=> [07/10/2012, ... ,13/10/2012] 
+0

非常好!正是我在找什麼!它完美無瑕!謝謝! – TomShreds

+1

很高興我能幫到你。我縮短了一些功能(不再需要嵌套功能)。 – KooiInc

2

試試這個:

var date = new Date('2012/06/25'); 
var day = date.getDay(); 
var array = [] 
for(var i=0;i<7;i++){ 
    if(i-day!=0){ 
     var days = i-day; 
     var newDate = new Date(date.getTime()+(days * 24 * 60 * 60 * 1000)); 
     array.push(newDate); 
} 
    else 
    array.push(date); 
} 
alert(array);​ 

Working Fiddle

+0

代碼擴展不工作,有括號缺失。我會試着玩弄它,看看它有什麼問題。謝謝! – TomShreds

+0

@TomShreds更新了代碼 – Ankur

+0

@TomShreds用一個工作小提琴改變了代碼 – Ankur

0

使用Date.js庫http://www.datejs.com 你可以做

someDate.next().sunday() 
+1

我需要一個JS唯一的方法,我不想爲此使用第三方庫,對不起,謝謝! – TomShreds

相關問題