c#一年的最后一个星期天

时间:2009-09-14 09:51:37

标签: c# date gregorian-calendar

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

7 个答案:

答案 0 :(得分:8)

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

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

0 Sun, 1 Mon, ... 6 Sat

然后

lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode

答案 1 :(得分:7)

不是最好的解决方案,但应该有效:

int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
    lastSunday = lastSunday.AddDays(-1);
}

答案 2 :(得分:5)

我认为你可以使用DayOfWeek枚举的整数表示:

DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);

答案 3 :(得分:3)

由于DayOfWeek的枚举从星期日的0开始,这应该有效:

    int Year = 2009;
    DateTime endOfYear = new DateTime(Year, 12, 31);
    DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek); 

答案 4 :(得分: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"));
}

答案 5 :(得分:0)

很抱歉,如果您看到here的VB版本,我就没有C#版本。我怀疑你能够转换它。

答案 6 :(得分:0)

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

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

如果你想要第二个,你必须使用System.Globalizartion.Calendar.GetWeekOfYear方法找出下一年的第一周开始的地方,并在那之前的一天。