You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从System.DayOfWeek列表中获取指定起始DateTime的下一个符合条件的日期

实现代码

public static DateTime GetNextWeekday(DateTime start, IEnumerable<DayOfWeek> days)
{
    // 输入参数合法性校验
    if (days == null)
        throw new ArgumentNullException(nameof(days));
    if (!days.Any())
        throw new ArgumentException("星期集合不可为空", nameof(days));

    // 转为HashSet提升查询效率
    var targetDays = new HashSet<DayOfWeek>(days);

    // 最多遍历7天必然匹配到符合条件的日期
    for (int offset = 0; offset < 7; offset++)
    {
        var currentDay = start.AddDays(offset);
        if (targetDays.Contains(currentDay.DayOfWeek))
        {
            return currentDay;
        }
    }

    // 防御性返回,理论上不会执行到此处
    return start;
}

逻辑说明

  • 如果需要排除起始日期当天的匹配,只需要将循环的起始偏移量从0修改为1即可
  • 示例验证:起始日期为2021-06-16(星期三),传入列表仅包含DayOfWeek.Monday时,循环偏移量到5时匹配到周一,对应日期2021-06-21,与预期结果完全一致

内容的提问来源于stack exchange,提问作者Vinyl Warmth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:15:04