按本周获取一周中的几天

Tez*_*eld 4 c#

在搜索堆栈溢出后,我似乎无法找到解决方案.我把一个图表(Chart.js)放在一起,我需要抓住当前周的几天绑定到图表,并将任何日期匹配到我的数据库中存储的数据,从而根据该日期回收所有数据.

所以如果有人能给我任何关于从本周获取List的指示,那将是非常棒的.

我希望这很清楚,请随意提出更多问题.对不起没有代码正在努力开始.对我来说,DateTime是一个绝对的噩梦.

问候,

spe*_*der 7

您可以使用以下DayOfWeek属性DateTime:

new DateTime(2014,11,16).DayOfWeek
Run Code Online (Sandbox Code Playgroud)

所以...要处理日期列表,首先,让我们列出日期:

var startDate = DateTime.Today;
var endDate = startDate.AddDays(7);
//the number of days in our range of dates
var numDays = (int)((endDate - startDate).TotalDays); 
List<DateTime> myDates = Enumerable
           //creates an IEnumerable of ints from 0 to numDays
           .Range(0, numDays) 
           //now for each of those numbers (0..numDays), 
           //select startDate plus x number of days
           .Select(x => startDate.AddDays(x))
           //and make a list
           .ToList();
Run Code Online (Sandbox Code Playgroud)

并得到一周的日子:

List<string> myDaysOfWeek = myDates.Select(d => d.DayOfWeek.ToString()).ToList();
Run Code Online (Sandbox Code Playgroud)

如果您希望本周开始(比如说)上一个星期一,您可以更改startDate如下:

startDate = startDate
           .AddDays(-(((startDate.DayOfWeek - DayOfWeek.Monday) + 7) % 7));
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为我们可以将枚举值enum DayOfWeek视为数字,因此我们可以MondaySunday(值0)中减去(值1 ),这得到-1 ...然后我们做一些微动以将此值包装为6使用模数学.如果从开始日期中减去结果值(以天为单位),则会在上一个星期一结束.

  • 或者`DateTime.Now.DayOfWeek`如果你不想硬编码它. (2认同)

Jim*_*hel 6

如果您想知道当前一周的天数,您需要:

Get the current day
Convert it to an integer
Subtract that many days from the current date. That gives you the date for Sunday.
Create a list, starting with Sunday.
Run Code Online (Sandbox Code Playgroud)

所以:

var now = DateTime.Now;
var currentDay = now.DayOfWeek;
int days = (int)currentDay;
DateTime sunday = now.AddDays(-days);
var daysThisWeek = Enumerable.Range(0, 7)
    .Select(d => sunday.AddDays(d))
    .ToList();
Run Code Online (Sandbox Code Playgroud)