在C#中计算前一周的开始和结束日期的最佳方法是什么?即今天3月18日将导致3月9日(上周一)和3月15日(上周日).
我已经看到使用DayOfWeek和switch语句来完成偏移,但是想知道是否有更优雅的方式.
您可以跳过while循环并使用
DateTime mondayOfLastWeek = date.AddDays( -(int)date.DayOfWeek - 6 );
这假设您使用星期一作为一周的第一天.
DayOfWeek weekStart = DayOfWeek.Monday; // or Sunday, or whenever DateTime startingDate = DateTime.Today; while(startingDate.DayOfWeek != weekStart) startingDate = startingDate.AddDays(-1); DateTime previousWeekStart = startingDate.AddDays(-7); DateTime previousWeekEnd = startingDate.AddDays(-1);
阅读:Backtrack一天一次,直到我们在本周开始,然后减去七到达上周的开始.
使用Fluent DateTime https://github.com/FluentDateTime/FluentDateTime
var dateTime = 1.Weeks().Ago(); var monday = dateTime.Previous(DayOfWeek.Sunday); var sunday = dateTime.Next(DayOfWeek.Sunday);