繁体   English   中英

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

[英]Last sunday of a year in c#

如何在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);

由于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版本。 我怀疑你能够转换它。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM