按周数获取日期范围c#

可能重复:
在.net中,知道周数我怎样才能得到工作日的日期?

你好,

我有一个问题,你好。 我如何获得给定周数的日期范围。

例如:如果我输入第12周,则输出应为:

21-03-2011 22-03-2011 23-03-2011 24-03-2011 25-03-2011 26-03-2011 27-03-2011 

我真的希望你们可以帮助我,我只是无法在任何地方找到它!

提前致谢。

注意

我似乎错过了错误。 目前的代码已经更新至2012-01-30,以解释这一事实,我们现在根据周二得出daysOffset ,根据Mikael Svenson的说法似乎可以解决问题。

这些ISO8601周日期计算有点不稳定,但这是你如何做到的:

 DateTime jan1 = new DateTime(yyyy, 1, 1); int daysOffset = DayOfWeek.Tuesday - jan1.DayOfWeek; DateTime firstMonday = jan1.AddDays(daysOffset); var cal = CultureInfo.CurrentCulture.Calendar; int firstWeek = cal.GetWeekOfYear(jan1, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); var weekNum = ww; if (firstWeek <= 1) { weekNum -= 1; } var result = firstMonday.AddDays(weekNum * 7 + d - 1); return result; 

基本上计算一个参考点,然后加上天数,这个问题与第53周有时可能发生在1月和第1周有时会在12月发生的事实有关。 你需要调整它,这是一种方法。

上面的代码计算一年(yyyy)和周数(ww)和星期几(d)的日期。

  • 找出一周中的哪一天是一年中的第一个月(例如2011年是星期六)
  • 添加必要的天数,成为下一个星期一(2天)
  • 从这一天起,添加(周数 – 1)* 7天以获得您感兴趣的一周的第一天 – 显示今天加上接下来的几天以获得整周

这样的事情应该可以解决问题

  DateTime d = new DateTime(someYear, 1, 1); d.AddDays(numWeeks * 7); for (int x = 0; x < 7; x++) { Console.WriteLine(d.ToShortDateString()); d.AddDays(1); }