2013-10-23 10 views
2

我使用這個代碼來生成從目前的每週5個日期爲我「日曆」:使用Javascript日期合作,獲得0以上31

var days = new Array(4); 
GetDaysOfWeek(new Date()); 

function GetDaysOfWeek(date) 
{ 
    for (var i = 0; i < 5; i++) 
    { 
    var $dd = (date.getDate() - date.getDay() + 1 + i); 
    var $mm = date.getMonth()+1; 
    var $yyyy = date.getFullYear(); 
if($dd<10){$dd='0'+$dd}if($mm<10){$mm='0'+$mm} 
days[i] = $dd+'/'+$mm+'/'+$yyyy; 
    } 
} 

但是這取決於它是什麼日期它可以返回00/10/2013或32/10/2013在我的一些箱子上。似乎唯一一個更新正確的是我的實際日期。

我將如何更新這5個日期,所以我會得到正確的日期,而不是不存在的日期。

在此先感謝。

+3

我可以推薦[moment.js](http://momentjs.com/)。這將節省很多頭痛。 –

+1

'$ dd'應該代表什麼?這個月的哪一天?這個計算對我來說沒有意義。 –

+0

如果您想顯示當前使用時間戳後的下5個日期。 1.獲取當前時間戳(開始日期):new Date()。getTime()/ 24 * 60 * 60 * 1000 2.然後創建第二天=新日期(當前+ 24 * 60 * 60 * 1000) 3.然後您可以顯示實際日期 – katrin

回答

0

下面是從給定日期創建5個工作日的日期數組的短小方法;

function weekdays(d){ 
    // set date [d] (or today) to the sunday before 
    var d = (function(){ 
      this.setDate(this.getDate()-(this.getDay())); 
      return this; 
      }).apply(d || new Date); 
    // create an Array with length 5 and map 5 dates starting 
    // from date [d] into it 
    return String(Array(5)).split(',') 
      .map(function(){ 
       return new Date(this.setDate(this.getDate()+1)); 
      }, d); 
} 

它返回從第一個週一工作日的日期之前,或者,如果給定的日期是星期天,從下週工作日的日期。

weekdays(); 
//=> [Mon Oct 21 2013 17:14:23 GMT+0200, ... ,Fri Oct 25 2013 17:14:23 GMT+0200] 
weekdays(new Date('2013/10/06')); 
//=> [Mon Oct 07 2013 00:00:00 GMT+0200, ..., Fri Oct 11 2013 00:00:00 GMT+0200] 

參見:Mozilla DNmap

也許this jsfiddle是利用你嗎?

0
currentTimestamp = new Date().getTime() 
currentDay = currentTimestamp-currentTimestamp%(24*60*60*1000) 
for (var i = 1; i< 6; i++){ 
nextDay = new Date(currentDay + i*24*60*60*1000) 
days[i] = nextDay.toString(); //specify the format yourself 
} 
+0

這也會給我saterdays和星期日,但我只需要工作日。天[0]星期五必須是星期一和星期[4]。 – user2911924

+0

你不清楚你想要什麼。 你可以使用date.getDay()來了解一週的日子,並檢查它是否是假期。假設當天是星期四24.10.13。因此,如果你想獲得本週(21-25.10.13),你應該做如下的事情:指定當前日期 - >日= date.getDay(),假設日= 3; for(var i = 1; i <6; i ++){previousOrNextDay = new Date(currentDay +(i-day)* 24 * 60 * 60 * 1000)等... – katrin

相關問題