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

PowerShell:如何排除下一个周一为未来日期的日期

调整PowerShell代码排除下一个周一为未来日期的条目

针对你的需求,我们只需要在原代码的筛选逻辑里加一个简单的判断,就能轻松排除那些“下一个周一属于未来日期”的周一条目。

修改后的完整代码

$FiscalStart = [datetime]'2019-03-31'
$date2 = Get-Date -Hour 0 -Minute 0 -Second 0
$EvaluateDates = 1..($date2 - $FiscalStart).Days | 
    ForEach-Object { $FiscalStart.AddDays($_) } | 
    Where-Object { 
        $_.DayOfWeek -eq 'Monday' -and 
        $_.AddDays(7) -le $date2 
    }
$EvaluateDates

为什么这样改?

原代码的问题是它只会筛选出两个日期范围内的所有周一,但不会考虑这个周一的下一个周是否已经过去。我们新增的$_.AddDays(7) -le $date2判断,就是在检查当前选中的周一,加上7天后的日期(也就是下一个周一)是否不晚于我们设定的结束日期(当前日期的0点)。

拿你给出的测试场景来说:

  • 当前日期是2020年2月9日(周日),$date2会被设置为2020-02-09 00:00:00
  • 原代码筛选出的最后一个周一是2020-02-03,它的下一个周一是2020-02-10,显然大于$date2,所以会被新的过滤条件排除。

兼容任意工作日运行

这个逻辑不管你在一周中的哪一天运行都能正常工作:

  • 如果当天是周一(比如2020-02-10),当天的下一个周一是2020-02-17,大于$date2(2020-02-10 00:00:00),所以当天的周一不会被包含
  • 如果当天是2020年2月18日(周二),那2020-02-10这个周一的下一个周一是2020-02-17,小于等于$date2(2020-02-18 00:00:00),就会被正常包含

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:18:13