2

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

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

我想返回DateTime代表今天之后第 n 周的第一天。

例如,当 n = 2 时,我想要DateTime代表下一个星期日。

有没有办法在 C# 中做到这一点?

4

4 回答 4

4

你可以使用:

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

那应该可以工作(尽管我无法访问任何东西来测试它!)。

编辑:感谢评论。

于 2011-05-10T18:26:49.143 回答
3

这应该有效:

int n = 2;
DateTime today = DateTime.Today;
int daysToNextSunday = (7 - today.DayOfWeek - DayOfWeek.Sunday) ;
DateTime nthSunday = today.AddDays((n - 1) * 7 + daysToNextSunday);
于 2011-05-10T18:36:37.157 回答
1

你能把从现在到星期天的天数加起来,然后再加 (n-1)*7 天吗?

于 2011-05-10T18:25:55.227 回答
0

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

这是一个使用.NET 的时间段库的Week类的示例:

// ----------------------------------------------------------------------
public DateTime GetStartOfWeek( DateTime moment, int offset )
{
  return new Week( new Week( moment ).WeekOfYear + Math.Abs( offset ) ).FirstDayOfWeek;
} // GetStartOfWeek
于 2011-05-11T05:33:12.763 回答