获取两个选定日期之间的星期几

Get days of week between two selected dates

我有两个datetimepickers。所以我想得到所选值之间的星期几。

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

所以结果应该是:days = Wed. Thu. Fri. Sat.

您可以轻松地迭代您的 DateTime 值,例如;

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

如果你想要他们的 abbreviated day names as Wed, Thu, Fri, Sat, you can use "ddd" custom format specifier with a english-based culture (like InvariantCulture) 赞;

var dt1 = new DateTime(2015, 1, 14);
var dt2 = new DateTime(2015, 1, 17);
while (dt2 >= dt1)
{
    Console.WriteLine(dt1.ToString("ddd", CultureInfo.InvariantCulture));
    dt1 = dt1.AddDays(1);
}

您想获取两个日期之间所有 DateTimeDayOfWeek 吗?

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

您需要添加using 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;
    }
}