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

如何使用PowerShell获取指定年月的第二个周日?

获取指定年月的第二个周日(PowerShell实现)

嘿,刚好做过类似的需求,咱来一步步拆解怎么用PowerShell搞定这个问题!

核心思路

要找到某个月的第二个周日,关键分两步:

  1. 先定位当月的第一个周日
  2. 给第一个周日加上7天,就是第二个周日啦

这里要注意一个边界情况:如果当月第一天就是周日,那第一个周日就是当天,加7天就是第二个周日,逻辑依然成立。

完整脚本实现(带可复用函数)

我写了一个通用函数,你可以直接调用,也能根据自己的需求调整输出格式:

function Get-SecondSunday {
    param(
        [Parameter(Mandatory=$true)]
        [ValidateRange(1, 9999)]  # 限制年份范围,避免无效值
        [int]$Year,
        
        [Parameter(Mandatory=$true)]
        [ValidateRange(1, 12)]     # 确保月份在1-12之间
        [int]$Month
    )

    # 第一步:获取当月的第一天
    $firstDayOfMonth = Get-Date -Year $Year -Month $Month -Day 1

    # 计算从第一天到第一个周日需要加的天数
    # DayOfWeek枚举值:周日=0,周一=1...周六=6
    $daysToFirstSunday = (7 - [int]$firstDayOfMonth.DayOfWeek) % 7
    $firstSunday = $firstDayOfMonth.AddDays($daysToFirstSunday)

    # 第二步:第一个周日加7天就是第二个周日
    $secondSunday = $firstSunday.AddDays(7)

    # 返回格式化后的日期字符串,也可以直接返回DateTime对象(去掉ToString即可)
    return $secondSunday.ToString("yyyy-MM-dd")
}

# 调用示例:获取2024年10月的第二个周日
Get-SecondSunday -Year 2024 -Month 10

临时计算的简化版

如果你只是临时查某个特定年月,不用写函数,直接跑这段代码就行:

# 替换成你需要的年份和月份
$targetYear = 2024
$targetMonth = 10

$firstDay = Get-Date -Year $targetYear -Month $targetMonth -Day 1
$firstSunday = $firstDay.AddDays((7 - [int]$firstDay.DayOfWeek) % 7)
$secondSunday = $firstSunday.AddDays(7)

# 自定义格式输出结果
Write-Host "第二个周日是:$($secondSunday.ToString("yyyy年MM月dd日"))"

关键逻辑解释

  • (7 - [int]$firstDay.DayOfWeek) % 7:这个表达式专门处理“当月第一天就是周日”的特殊情况。如果第一天是周日,计算结果为0,加0天就是当天;如果第一天是周一(值为1),则需要加6天到周日,以此类推。
  • 加入ValidateRange属性是为了避免用户输入无效的月份(比如13)或年份,让脚本更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:29:26