Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按当前周获取周中的天数_C# - Fatal编程技术网

C# 按当前周获取周中的天数

C# 按当前周获取周中的天数,c#,C#,在通过堆栈溢出进行搜索之后,我似乎找不到解决方案。我已经整理了一张图表(chart.js),我需要抓取当前一周的天数,将其绑定到图表,并将任何日期与数据库中存储的日期进行匹配,从而根据该日期返回所有数据 所以,如果有人能给我一些关于本周获取列表的建议,那就太棒了 我希望这足够清楚,请随时提出更多问题。抱歉,没有代码难以启动。对我来说,DateTime绝对是一场噩梦 关于,您可以使用DateTime的属性: new DateTime(2014,11,16).DayOfWeek 所以。。。要处理日

在通过堆栈溢出进行搜索之后,我似乎找不到解决方案。我已经整理了一张图表(chart.js),我需要抓取当前一周的天数,将其绑定到图表,并将任何日期与数据库中存储的日期进行匹配,从而根据该日期返回所有数据

所以,如果有人能给我一些关于本周获取列表的建议,那就太棒了

我希望这足够清楚,请随时提出更多问题。抱歉,没有代码难以启动。对我来说,DateTime绝对是一场噩梦

关于,

您可以使用
DateTime
的属性:

new DateTime(2014,11,16).DayOfWeek
所以。。。要处理日期列表,首先,让我们制作一个日期列表:

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();

这是因为我们可以将的枚举值视为数字,因此我们可以从
Sunday
(值0)中减去
Sunday
(值1),得到-1。。。然后,我们使用模数学将这个值包装到
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.
因此:


或者
DateTime.Now.DayOfWeek
如果您不想硬编码的话。
DateTime.Today.DayOfWeek
可能会稍微快一点,并且更接近硬编码版本。@spender!如果您不介意的话,可以让我完成“Enumerable.Range(0,(int)((endDate-startDate.TotalDays))。选择(x=>startDate.AddDays(x))”的过程吗?还有重新声明startDate变量?我很想了解这个过程。再次感谢您的快速回复。问候。@TezWingfield:我在里面放了一些评论来帮助你了解正在发生的事情,以及一些关于找到前一个星期一的解释。@spender太棒了,谢谢!祝你一切顺利。当做
startDate = startDate
           .AddDays(-(((startDate.DayOfWeek - DayOfWeek.Monday) + 7) % 7));
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.
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();