可能重复:
In .net, knowing the week number how can I get the weekdays date?
您好,
我有一个问题,你好。 我如何获得给定周数的日期范围。
例如: 如果我进入第12周,输出应为:
21-03-2011
22-03-2011
23-03-2011
24-03-2011
25-03-2011
26-03-2011
27-03-2011
我真的希望你们可以帮助我,我只是无法在任何地方找到它!
提前致谢。
答案 0 :(得分:11)
注意
我似乎错过了错误。目前的代码已经更新至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)的日期。
答案 1 :(得分:5)
答案 2 :(得分:0)
这样的事情可以解决问题
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);
}