计算前一周的开始和结束日期

Hen*_*ryk 37 c#

在C#中计算前一周的开始和结束日期的最佳方法是什么?即今天3月18日将导致3月9日(上周一)和3月15日(上周日).

我已经看到使用DayOfWeek和switch语句来完成偏移,但是想知道是否有更优雅的方式.

bst*_*ney 61

您可以跳过while循环并使用

DateTime mondayOfLastWeek = date.AddDays( -(int)date.DayOfWeek - 6 );
Run Code Online (Sandbox Code Playgroud)

这假设您使用星期一作为一周的第一天.

  • 不错的单线方法.我认为无论其运行的日期如何,以下内容都会有效:mondayOfLastWeek = DateTime.Now.AddDays( - (int)DateTime.Now.DayOfWeek - 6); sundayOfLastWeek = DateTime.Now.AddDays( - (int)DateTime.Now.DayOfWeek); (4认同)
  • 要回答这个问题,startOfWeek应该命名为sundayOfLastWeek."DateTime mondayOfLastWeek = date.AddDays( - (int)date.DayOfWeek - 6);" (2认同)

mqp*_*mqp 27

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);
Run Code Online (Sandbox Code Playgroud)

阅读:Backtrack一天一次,直到我们在本周开始,然后减去七到达上周的开始.


Sim*_*mon 11

使用Fluent DateTime https://github.com/FluentDateTime/FluentDateTime

var dateTime = 1.Weeks().Ago();
var monday = dateTime.Previous(DayOfWeek.Sunday);
var sunday = dateTime.Next(DayOfWeek.Sunday);
Run Code Online (Sandbox Code Playgroud)