如何在C#中获取一年的最后一个星期日? gregoriancalendar类会有帮助吗?

有帮助吗?

解决方案

我不知道是否有方法,但一个简单的方法是检查12月的最后7天,从第31天开始倒计时。

更新:实际上,如果星期几的编号如下:

0 Sun, 1 Mon, ... 6 Sat

然后

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);

您可以找到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版本。我怀疑你能够转换它。

这取决于......你想要一年中的最后一天是星期天,还是一年中最后一周的星期日?根据您所在国家/地区的确定周数,一年中的最后一周可能会在明年的六天内完成。

如果你想要第一个,你可以从12月31日开始,然后回去,直到你找到一个星期天。

如果你想要第二个,你将不得不使用 System.Globalizartion.Calendar.GetWeekOfYear 方法来找出明年第一周的开始位置,并在前一天开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top