给出C#中的周数和年份,计算一周的开始和结束日期(基于ISO规范)

4 c# vb.net vb6 datetime calendar

我需要生成一份报告,显示一年中的52周(或某些年份为53周)及其开始和结束日期.有一个ISO规范要做到这一点,但看起来非常复杂!我希望有人知道在C#或Visual Basic中实现它的方法(它实际上用于Visual Basic 6,但我会尝试将其移植到其中)

Guf*_*ffa 5

您可以使用该Calendar.GetWeekOfYear方法获取日期的周数,其CalendarWeekRule.FirstFourDayWeek值指定周的确定方式,并DayOfWeek.Monday指定第一个工作日.这符合ISO规范.

例:

int week = Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
Run Code Online (Sandbox Code Playgroud)

要获得一年中第一周的第一个日期,您可以从1月4日开始,然后回到找到星期一:

DateTime t = new DateTime(DateTime.Today,Year, 1, 4);
while (t.DayOfWeek != DayOfWeek.Monday) t = t.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)