获取下一周日期(C#)

4

我需要从表格中获取下周的数据(从周一到周日的日期),从今天开始计算。

以下是如何获取今天和明天的数据:

 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
可能是重复的问题,参考 Datetime - Get next tuesday - pinkfloydx33
使用 dupe 计算下一个星期一和下下一个星期一,然后调整您的 where 子句 Where(x=> x.Date >= nextMonday && x.Date < followingMonday) - pinkfloydx33
2个回答

3
您可以尝试像这样做:

您可以尝试这样做:

//first get next monday (thanks to this answer: https://dev59.com/QWw15IYBdhLWcg3w3vpe#6346190 )
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);

2

在计算即将上映的电影放映时间时,我遇到了类似的问题。

以下内容用于计算到下一个期望开始日期的偏移量。

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

你可以基于计算出的日期范围进行筛选。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接