0

2012 年 4 月 1 日と 2013 年 1 月 15 日の 2 つの任意の日付があります。これら 2 つの日付の間の日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、および土曜日の数を計算したいと考えています。

ユーザーのCPU/ブラウザを壊さずにこれを行う確実で迅速な方法はありますか?

ありがとう

アップデート

これの前提は、特定の曜日のイベントの平均数が定義されていることです。部分的であっても、期間内に発生するイベントの数を計算する必要があります (たとえば、日曜日の 1/2 日は、合計に追加されるイベント数の半分になります)。

4

2 に答える 2

2

わかりました、ここに可能な未テストの解決策があります

date1 = new Date("2012-02-10");
date2 = new Date("2012-03-10");

daysInBetween = (date2.getTime() - date1.getTime())/1000/3600/24;

dayOfTheWeek1 = date1.getDay();

weeks = parseInt(daysInBetween/7, 10);
extraDays = daysInBetween%7;

あなたにはweeks + 1何日もありますdayOfWeek1 ... dayOfWeek1 + (6 - extraDays)

あなたにはweeks + 1 + extraDays何日もありますdayOfWeek1 + (6 - extraDays) ... dayOfWeek1 + 6

dayOfWeek1 === 6その場合、私はそれを想定していることを考慮してくださいdayOfWeek1 + 1 === 0

編集:

もう少しコード:

var days = {};
var dayOfTheWeekEnd = dayOfTheWeek1 + 6 - extraDays; // no imagination for names...
if (dayOfTheWeekEnd < 6) {
  if (0 >= dayOfTheWeek1 && 0 <= dayOfTheWeekEnd) {
    days.sunday = weeks + 1;
  } else {
    days.sunday = weeks + 1 + extraDays;
  }
  // etc for the other days, a for loog with an i instead of the 0 would be better.
} else {
  // I have to go the school! I'll edit it later.
  // The idea is that you have to take dayOfTheWeekEnd back to the 0-6 range
  // and check if its after dayOfWeek1 or before dayOfTheWeekEnd, then days.sunday=weeks+1.
}
于 2013-05-14T18:12:02.770 に答える