週末の定義をより具体的にしてください。週末全体(土曜日と日曜日の48時間全体)のみを含めますか?または、金曜日の夜/土曜日の朝の深夜を含む時間の範囲は週末としてカウントされますか?週末の半分は半分としてカウントされますか、それとも最も近い整数に丸めますか?
とにかく:
- 週末を構成するものを理解する
- あなたの時間の範囲で最初と最後の週末を見つけてください
- それらの間の時差を日数で見つけ、7で割ります
編集:四捨五入せずに、週末の正確な時間を求めています。
まず、タイムスパンを3つのチャンクに分割します。
- 範囲の最初から月曜日の朝の真夜中までのすべて
- 前のブロックの終わりから月曜日の午前0時までのすべて
- 前のブロックの終わりから範囲の終わりまでのすべて
次に、各ブロックの週末の量を計算し、それらを合計します。
- 最初のブロックの長さがゼロの場合、週末の時間は含まれません。長さが48時間以下の場合、週末の時間はその長さに等しくなります。それ以外の場合、週末の時間は48時間になります。
- 真ん中のブロックの週末の時間は、その期間に2/7を掛けたものです(開始と終了の制限により、整数週間であるため、些細なことです)。
- 期間が5日以下の場合、最後のブロックには週末の時間が含まれません。期間が5日を超える場合、週末の時間は期間から5日を引いたものに等しくなります。
特殊なケース
ブロックに月曜日の深夜が含まれていない場合は、2番目と3番目のブロックの長さがゼロであると見なしてください。ブロック内のある週末の始まりと終わり(存在する場合)を見つけて、オーバーラップを計算します。
ブロックに月曜日の真夜中がちょうど1つ含まれている場合は、最初のブロックをその前の時間、2番目のブロックの長さをゼロ、3番目のブロックをその後の時間と見なし、通常どおり計算します。