-1

2012 年 4 月 13 日から始まる毎週金曜日の日付を取得して、C#、asp.net を使用してストアド プロシージャにパラメーターとして渡すことができるかどうか疑問に思っています。

また、最近渡された日付である必要があります。ありがとうございました!

4

4 に答える 4

8

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);
于 2012-04-17T18:59:57.943 に答える
2

金曜日のセットを提供するジェネレーター メソッドを簡単に作成できます。

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);
于 2012-04-17T19:01:24.573 に答える
0

なぜストアド プロシージャが必要なのですか?

金曜日の日付がある場合AddDays(14)は、ループで使用してみませんか?

開始日から最も近い金曜日を見つけたい場合は、次のようにします。

while(date.DayOfWeek != DayOfWeek.Friday)
{
    date.AddDays(1);
}

次に、14 日間のループを使用して、隔週の金曜日を取得します。

于 2012-04-17T19:01:40.363 に答える
0

次のように列挙する簡単なメソッドを作成できます。

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);
于 2012-04-17T19:13:27.307 に答える