2

C#で年の最後の日曜日の日付を取得するにはどうすればよいですか?? gregoriancalendar クラスは役に立ちますか?

4

7 に答える 7

8

そのための方法があるかどうかはわかりませんが、簡単な方法は、12 月の最後の 7 日間を 31 日からカウントダウンして確認することです。

更新:実際には、曜日が次のように番号付けされている場合:

0 Sun, 1 Mon, ... 6 Sat

それから

lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode
于 2009-09-14T09:55:17.043 に答える
7

最も良い解決策ではありませんが、うまくいくはずです:

int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
    lastSunday = lastSunday.AddDays(-1);
}
于 2009-09-14T09:59:54.360 に答える
5

DayOfWeekこれには、列挙の整数表現を使用できると思います。

DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
于 2009-09-14T10:10:36.833 に答える
3

DayOfWeekの列挙は日曜日の 0 から始まるため、これは機能するはずです。

    int Year = 2009;
    DateTime endOfYear = new DateTime(Year, 12, 31);
    DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek); 
于 2009-09-14T10:14:42.790 に答える
1

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"));
}
于 2009-09-14T09:54:24.547 に答える
0

それは場合によって異なります... 年の最後の日である日曜日が必要ですか、それとも年の最後の週の日曜日が必要ですか? お住まいの国で週がどのように決定されるかによって、その年の最後の週が翌年の 6 日まで続く場合があります。

最初が必要な場合は、12 月 31 日に開始して、日曜日が見つかるまで戻ることができます。

2番目が必要な場合は、System.Globalizartion.Calendar.GetWeekOfYearメソッドを使用して翌年の最初の週がどこから始まるかを調べ、その前の日を取る必要があります。

于 2009-09-14T10:05:31.960 に答える
0

申し訳ありませんが、C# のバージョンはありませ。変換できると思います。

于 2009-09-14T09:54:57.263 に答える