获取今天后第n个星期日的日期时间

时间:2011-05-10 18:19:34

标签: c# .net datetime week-number

我正在使用以下内容获取当前的周数:

var weekNo = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.UtcNow,
                                                  CalendarWeekRule.FirstFullWeek,
                                                  DayOfWeek.Sunday);

我希望在今天之后返回代表第n周第一天的DateTime

e.g。当n = 2时,我希望DateTime代表下一个星期日。

我有可能在C#中做到这一点吗?

4 个答案:

答案 0 :(得分:4)

您可以使用:

DateTime sundayInFuture = DateTime.Today.AddDays((n - 1) * 7 + (7 - (int)DateTime.Today.DayOfWeek));

这应该有用(虽然我没有任何东西可以测试它!)。

编辑:感谢评论。

答案 1 :(得分:3)

这应该有效:

int n = 2;
DateTime today = DateTime.Today;
int daysToNextSunday = (7 - today.DayOfWeek - DayOfWeek.Sunday) ;
DateTime nthSunday = today.AddDays((n - 1) * 7 + daysToNextSunday);

答案 2 :(得分:1)

您可以添加从现在到星期日的天数,然后再添加(n-1)* 7天吗?

答案 3 :(得分:0)

请注意, Calendar.GetWeekOfYear 不符合 ISO 8601

此处示例使用Time Period Library for .NET类:

// ----------------------------------------------------------------------
public DateTime GetStartOfWeek( DateTime moment, int offset )
{
  return new Week( new Week( moment ).WeekOfYear + Math.Abs( offset ) ).FirstDayOfWeek;
} // GetStartOfWeek