2012 年 4 月 13 日から始まる毎週金曜日の日付を取得して、C#、asp.net を使用してストアド プロシージャにパラメーターとして渡すことができるかどうか疑問に思っています。
また、最近渡された日付である必要があります。ありがとうございました!
DateTime
開始したい日付を設定し、 14 日を追加し続けます。
したがって、4/13 以降、年末まで隔週金曜日を取得するには、次のようにします。
DateTime dt = new DateTime(2012, 04, 13);
while (dt.Year == 2012)
{
Console.WriteLine(dt.ToString());
dt = dt.AddDays(14);
}
コメント後の詳細情報:
2012 年 4 月 13 日以降の最新の代替金曜日が必要な場合は、現在から 2012 年 4 月 13 日までの日数を計算し、その余りを 14 で割って、今日の日付からその日数を引くことができます。
DateTime baseDate = new DateTime(2012, 04, 13);
DateTime today = DateTime.Today;
int days = (int)(today - baseDate).TotalDays;
int rem = days % 14;
DateTime mostRecentAlternateFriday = today.AddDays(-rem);
金曜日のセットを提供するジェネレーター メソッドを簡単に作成できます。
public IEnumerable<DateTime> GetAlternatingFridaysStartingFrom(DateTime startDate)
{
DateTime tempDate = new DateTime(startDate.year, startDate.Month, startDate.Day);
if(tempDate.DayOfWeek != DayOfWeek.Friday)
{
// Math may be off, do some testing
tempDate = tempDate.AddDays((7 - ((int)DayOfWeek.Friday - (int)tempDate.DayOfWeek) % 7);
}
while(true)
{
yield return tempDate;
tempDate = tempDate.AddDays(14);
}
}
次に、LINQ を使用して必要な量を決定します。
var numberOfFridays = GetAlternatingFridaysStartingFrom(DateTime.Today).Take(10);
なぜストアド プロシージャが必要なのですか?
金曜日の日付がある場合AddDays(14)
は、ループで使用してみませんか?
開始日から最も近い金曜日を見つけたい場合は、次のようにします。
while(date.DayOfWeek != DayOfWeek.Friday)
{
date.AddDays(1);
}
次に、14 日間のループを使用して、隔週の金曜日を取得します。
次のように列挙する簡単なメソッドを作成できます。
public static IEnumerable<DateTime> GetAlternatingWeekDay(DateTime startingDate)
{
for (int i = 1; ; i++)
{
yield return startingDate.AddDays(14*i);
}
}
次のように呼び出すことができます:
DateTime startingDate = DateTime.Parse("2012-04-13");
foreach (var date in GetAlternatingWeekDay(startingDate).Take(10))
{
Console.WriteLine(date.ToString("R"));
}
または、特定の週数の日付を知る必要がある場合は、次のようなコードを使用できます。
DateTime date = DateTime.Parse("2012-04-13").AddDays(7 * numberOfWeeks);