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

如何使用PowerShell 7.x根据周数获取整周日期数组?

根据周数生成整周日期数组(PowerShell 7.x)

我正在使用PowerShell 7.x,想要根据指定年份和周数生成包含整周日期的数组。目前能生成数组并获取日期,但不知道怎么直接返回日期值。

我已经用[System.Globalization.ISOWeek]::ToDateTime([Int32] year,[Int32] week number,[DayOfWeek]:Monday)来获取单天日期,有没有更简洁的方法生成整周日期的数组?

以下是我写的代码:

function fetchWeekDates {
    $output = @{ Monday =[System.Globalization.ISOWeek]::ToDateTime(2022,1,[DayOfWeek]::Monday)}
    $output += @{ Tuesday=[System.Globalization.ISOWeek]::ToDateTime(2022,1,[DayOfWeek]::Tuesday)}
    $output += @{ Wednesday =[System.Globalization.ISOWeek]::ToDateTime(2022,1,[DayOfWeek]::Wednesday)}
    .
    .
    .
    $output += @{ Sunday =[System.Globalization.ISOWeek]::ToDateTime(2022,1,[DayOfWeek]::Sunday)}

    return $output
}

期望输出:

Output
------- 
01-03-2022
01-04-2022
01-05-2022
01-06-2022
01-07-2022
01-08-2022
01-09-2022

优化后的解决方案

你当前的代码重复调用方法,冗余且效率低。可以先获取该周的周一日期,再通过循环依次累加天数生成整周日期,简洁高效:

方法1:封装为可复用函数

function Get-WeekDates {
    param(
        [Parameter(Mandatory)]
        [int]$Year,
        [Parameter(Mandatory)]
        [int]$WeekNumber
    )

    # 获取目标周的周一作为起始日期
    $monday = [System.Globalization.ISOWeek]::ToDateTime($Year, $WeekNumber, [DayOfWeek]::Monday)
    
    # 生成周一到周日的日期数组(0=周一,6=周日)
    $weekDates = 0..6 | ForEach-Object { $monday.AddDays($_) }
    
    # 格式化为指定的MM-dd-yyyy格式输出,若需保留DateTime对象可去掉此步
    $weekDates | ForEach-Object { $_.ToString("MM-dd-yyyy") }
}

使用示例

Get-WeekDates -Year 2022 -WeekNumber 1

输出结果

01-03-2022
01-04-2022
01-05-2022
01-06-2022
01-07-2022
01-08-2022
01-09-2022

方法说明

  1. 仅调用一次ISOWeek::ToDateTime获取目标周的起始周一,避免重复计算
  2. 用0..6生成0到6的数字,对应周一之后的0到6天(覆盖整周)
  3. 通过AddDays()依次生成每天的日期,最终得到完整周的日期数组
  4. 按需格式化日期,若不需要字符串格式,直接返回$weekDates即可得到原始DateTime对象数组

简化一行式写法

如果不需要封装函数,可直接用一行代码生成:

$year = 2022; $week = 1; 0..6 | ForEach-Object { [System.Globalization.ISOWeek]::ToDateTime($year, $week, [DayOfWeek]::Monday).AddDays($_).ToString("MM-dd-yyyy") }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:29