2017-08-27 73 views
3

我需要從表中獲取數據,其中Date從下週(從星期一到星期日)從今天的日期開始。獲取下週的日期(C#)

這是我如何獲取數據今天和明天的日期:

public JsonResult GetTodayList() 
    { 
     var items = db.Appointments.Where(x => x.Date == DateTime.Today) 
      .Select(x => new 
      { 
       title = x.Title, 
       time = x.Start_appointment 

      }).ToList(); 

     return Json(items, JsonRequestBehavior.AllowGet); 

    } 

    public JsonResult GetTommorowList() 
    { 
     DateTime tommorow = DateTime.Today.AddDays(1); 
     var items = db.Appointments.Where(x => x.Date == tommorow) 
      .Select(x => new 
      { 
       title = x.Title, 
       time = x.Start_appointment 
      }).ToList(); 
     return Json(items, JsonRequestBehavior.AllowGet); 
    } 

我怎樣才能獲得下週日期的數據?

+1

可能重複的[日期時間 - 獲取下一個星期二](https://stackoverflow.com/questions/6346119/datetime-get-next-tuesday) – pinkfloydx33

+0

計算nextMonday和下面的星期一使用愚弄,然後調整你的Where子句'Where (x => x.Date> = nextMonday && x.Date pinkfloydx33

回答

3

你可以嘗試這樣的事:

//first get next monday (thanks to this answer: https://stackoverflow.com/a/6346190/6170890) 
DateTime today = DateTime.Today; 
int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek + 7) % 7; 
//if today is monday, add seven days 
if (daysUntilMonday == 0) 
    daysUntilMonday = 7; 

//create DateTime variables for next week's beginning and end 
DateTime nextWeekMonday = today.AddDays(daysUntilMonday); 
DateTime nextWeekSunday = nextWeekMonday.AddDays(6); 

//finally, do your select 
var items = db.Appointments.Where(x => x.Date >= nextWeekMonday && x.Date <= nextWeekSunday) 
.Select(x => new 
{ 
    title = x.Title, 
    time = x.Start_appointment 
}).ToList(); 
return Json(items, JsonRequestBehavior.AllowGet); 
1

我計算即將上映的電影放映時間時,也有類似的問題。

以下是用於計算到下一個預期開始日期的偏移量。

public int CalculateOffset(DayOfWeek current, DayOfWeek desired) { 
    // f(c, d) = [7 - (c - d)] mod 7 
    // f(c, d) = [7 - c + d] mod 7 
    // c is current day of week and 0 <= c < 7 
    // d is desired day of the week and 0 <= d < 7 
    int c = (int)current; 
    int d = (int)desired; 
    int offset = (7 - c + d) % 7; 
    return offset == 0 ? 7 : offset; 
} 

DateTime today = DateTime.Today; 
var currentDayOfWeek = today.DayOfWeek; 
var desiredDayOfWeek = DayOfWeek.Monday; //Start of the week 

int offset = CalculateOffset(currentDayOfWeek, desiredDayOfWeek); 

var minDate = today.AddDays(offset); // Monday 12:00:00 AM 
var maxDate = minDate.AddDays(7).AddSeconds(-1); // Sunday 12:59:59 PM 

然後,您可以過濾器的基礎上計算出的時間範圍。