我正在使用以下内容获取当前的周数:
var weekNo = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.UtcNow,
CalendarWeekRule.FirstFullWeek,
DayOfWeek.Sunday);
我希望在今天之后返回代表第n周第一天的DateTime
。
e.g。当n = 2时,我希望DateTime
代表下一个星期日。
我有可能在C#中做到这一点吗?
答案 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