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

本文关键字:之间 日期 两个 获取 | 更新日期: 2023-09-27 18:37:23

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

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

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

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

您想获取两个日期之间所有DateTimeDayOfWeek 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();

您需要添加using System.Linq;

您可以轻松迭代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

如果你想把他们的缩写日期名称作为Wed, Thu, Fri, Sat,你可以使用"ddd"自定义格式说明符与基于英语的文化(如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);
}

另一种选择,包括不常用的 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;
    }
}