質問
C#で1年の最後の日曜日の日付を取得するにはどうすればよいですか? gregoriancalendarクラスは役立ちますか?
解決
その方法があるかどうかはわかりませんが、簡単な方法は、31日目からカウントダウンして12月の最後の7日間をチェックすることです。
更新:実際に曜日が次のように番号付けされている場合:
0 Sun, 1 Mon, ... 6 Sat
then
lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode
他のヒント
最適なソリューションではありませんが、動作するはずです:
int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
lastSunday = lastSunday.AddDays(-1);
}
これには DayOfWeek
列挙の整数表現を使用できると思います:
DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
DayOfWeek 日曜日の0から始まります。これは動作するはずです:
int Year = 2009;
DateTime endOfYear = new DateTime(Year, 12, 31);
DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
12月31日の曜日を確認できます。次に(日曜日でない場合)計算し直します...
for (int y=2009; y<=2018; y++)
{
DateTime dt = new DateTime(y, 12, 31); // last day of year
dt = dt.AddDays(-(int)dt.DayOfweek); // sun == 0, so then no change
Console.WriteLine(dt.ToString("dddd dd-MM-yyyy"));
}
申し訳ありませんが、こちらが表示される場合、C#バージョンはありません。 VBバージョンの場合は。変換できると思います。
それは依存します...年の最後の日を日曜日にしたいですか、それとも年の最後の週の日曜日にしたいですか?自国での週の決定方法によっては、年の最後の週が翌年まで6日間になる場合があります。
最初のものが必要な場合は、12月31日から始めて、日曜日が見つかるまで戻ることができます。
2番目が必要な場合は、 System.Globalizartion.Calendar.GetWeekOfYear
メソッドを使用して、来年の最初の週がどこから始まるかを調べ、その前日をとる必要があります。
所属していません StackOverflow