構造体にはというDateTime
プロパティがありますDayOfWeek
。これは、そのインスタンスに対応する曜日を示す列挙ですDateTime
。
したがって、次のようなコードを書くことができます。
List<DateTime> sixFridays = new List<DateTime>();
DateTime foo = DateTime.Today;
while (sixFridays.Count < 6) {
if (foo.DayOfWeek == DayOfWeek.Friday) sixFridays.Add(foo);
foo = foo.AddDays(-1);
}
これで、今日から 6 金曜日前になります。今日から 6 金曜日後が必要な場合は、ループに -1 の代わりに 1 日を追加します。
@Damien_The_Unbeliever は、力ずくではないアプローチを提案しました。ここに行きます:
List<DateTime> sixFridays = new List<DateTime>();
DateTime foo = DateTime.Today;
while (foo.DayOfWeek != DayOfWeek.Friday) {
foo = foo.AddDays(-1);
}
for (int i = 0; i < 6; foo.AddDays(-7)) {
sixFridays.Add(foo);
i++; // I don't remember if you could place this together with foo.AddDays(-7) in the last part of the command.
}
OPが金曜日でもある場合に備えて現在の日を含めたいと言ったので編集しました。また、今日の6日前の金曜日です。