C# 获取两个选定日期之间的周天数

C# 获取两个选定日期之间的周天数,c#,datetime,C#,Datetime,我有两个datetimepicker。因此,我希望获得所选值之间的一周天数 示例:date1=14/1/2015和date2=17/1/2015 因此结果应该是:days=Wed。清华大学。星期五。Sat.您可以轻松迭代您的日期时间值,如 var dt1 = new DateTime(2015, 1, 14); var dt2 = new DateTime(2015, 1, 17); while (dt2 >= dt1) { Console.WriteLine(dt1.DayOfW

我有两个
datetimepicker
。因此,我希望获得所选值之间的一周天数

示例:
date1=14/1/2015
date2=17/1/2015


因此结果应该是:
days=Wed。清华大学。星期五。Sat.

您可以轻松迭代您的
日期时间
值,如

var dt1 = new DateTime(2015, 1, 14);
var dt2 = new DateTime(2015, 1, 17);
while (dt2 >= dt1)
{
    Console.WriteLine(dt1.DayOfWeek);
    dt1 = dt1.AddDays(1);
}
结果将是

Wednesday
Thursday
Friday
Saturday
如果你想让他们成为星期三、星期四、星期五、星期六,你可以使用英语文化(like)like


是否要获取两个日期之间所有日期时间的
DayOfWeek
s

int daysDiff = (date2 - date1).Days;
List<DayOfWeek> days = Enumerable.Range(0, daysDiff + 1) // +1 because you want to include start and end date
    .Select(d => date1.AddDays(d).DayOfWeek)
    .ToList();
intdaysdiff=(date2-date1).Days;
List days=Enumerable.Range(0,daysDiff+1)//+1,因为您希望包括开始日期和结束日期
.Select(d=>date1.AddDays(d).DayOfWeek)
.ToList();

您需要使用System.Linq添加

另一种替代方法,包括非常规使用for循环和
yield return
语句:

void Main()
{
    var daysOfWeek = DaysBetween(
        new DateTime(2015, 1, 14), 
        new DateTime(2015, 1, 17));

    Console.WriteLine(
        String.Join(", ", daysOfWeek.Select(d => d.ToString().Substring(0, 3))));

    // prints: Wed, Thu, Fri, Sat
}

IEnumerable<DayOfWeek> DaysBetween(DateTime start, DateTime end)
{
    for (var dateTime = start; dateTime <= end; dateTime = dateTime.AddDays(1))
    {
        yield return dateTime.DayOfWeek;
    }
}
void Main()
{
var daysOfWeek=DaysBetween(
新日期时间(2015年1月14日),
新日期时间(2015年1月17日);
控制台写入线(
Join(“,”,daysOfWeek.Select(d=>d.ToString().Substring(0,3));
//版画:星期三、四、五、六
}
IEnumerable DaysBetween(日期时间开始,日期时间结束)
{

对于(var dateTime=start;dateTime)我可以问一下您尝试了什么吗?您能否分享您的努力,让我们看看您尝试了什么,这将帮助我们了解哪里出了问题,以便我们可以更好地帮助您。目前,它的内容是:“为我做我的工作”,可能不太受欢迎。您可以每周工作日==7天或工作日(也就是说,没有星期天,没有星期六)?您尝试过什么吗?您的问题可以通过从date1到Date2的简单循环轻松解决。stackoverflow中有一个答案:)[[1]:@MyDaftQuestions我做了一些编码,但我得到的只是计算天数。@我想发表评论,至少这样我可以看出我可能错在哪里?简单有效。
void Main()
{
    var daysOfWeek = DaysBetween(
        new DateTime(2015, 1, 14), 
        new DateTime(2015, 1, 17));

    Console.WriteLine(
        String.Join(", ", daysOfWeek.Select(d => d.ToString().Substring(0, 3))));

    // prints: Wed, Thu, Fri, Sat
}

IEnumerable<DayOfWeek> DaysBetween(DateTime start, DateTime end)
{
    for (var dateTime = start; dateTime <= end; dateTime = dateTime.AddDays(1))
    {
        yield return dateTime.DayOfWeek;
    }
}