問題を軽減するために私がしたことは、指定された日付を取得し、そこから組み込みの DateTimeFormat.FirstDayOfWeek を使用して「最初の」曜日の日付を計算し、その週の終わりの日付を 6 を追加して確立することでした。日付までの日数、日付を開始日と終了日としてデータテーブルにコミットし、1 つ追加して日付を次の週にプッシュします。
また、セットに必ず終了日があることを確認するために、入力された終了日とその週の計算された終了日を比較します。最終的に、これらの日付の減算は負の数またはゼロで終了します。これは、入力された終了日がその週に該当することを示します。 DataTable にコミットしただけです。これを行うためのより良い方法があると確信していますが、それでも機能します。これにより、20 分かかる時間で少なくとも 1 人が救われることを願っています。ありがとう!
String sBeginDate = "";//Given in input
String sEndDate = "";//Given in input
DateTime weekStartDate;
DateTime weekEndDate;
DataTable dtWeeksInRange = new DataTable();
DataColumn dcWeekStart = new DataColumn("WeekStart");
DataColumn dcWeekEnd = new DataColumn("WeekEnd");
dtWeeksInRange.Columns.Add(dcWeekStart);
dtWeeksInRange.Columns.Add(dcWeekEnd);
DayOfWeek firstday = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
weekStartDate = Convert.ToDateTime(sBeginDate) ;
do
{
while (weekStartDate.DayOfWeek != firstday)
{
weekStartDate = weekStartDate.AddDays(-1);
}
weekEndDate = weekStartDate.AddDays(6);
dtWeeksInRange.Rows.Add(weekStartDate, weekEndDate);
weekStartDate = weekEndDate.AddDays(1);
}
while ((Convert.ToDateTime(sEndDate).Subtract(weekEndDate)).Days > 0);
foreach (DataRow dr in dtWeeksInRange.Rows)
{
//Outputting the set of dates to the page
Response.Write(Convert.ToDateTime(dr["WeekStart"]).ToShortDateString() +
" - " +
Convert.ToDateTime(dr["WeekEnd"]).ToShortDateString() +
"<br />");
}