如何在C#中获取一年的最后一个星期日? gregoriancalendar类会有帮助吗?
答案 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
方法找出下一年的第一周开始的地方,并在那之前的一天。