PowerShell修改代码获取过去一周最近周五并支持格式化输出
PowerShell代码修改方案:获取过去一周最近周五并格式化输出
原代码逻辑说明
原有代码遍历当前日期之后0~7天的日期,匹配到的第一个周五是未来时间范围内最近的周五,不符合查找过去一周内周五的需求。
核心调整点
- 将日期遍历范围从「向后07天」改为「向前06天」,完整覆盖当前时间往前推7天的周期
- 保持从当前日期向更早日期的遍历顺序,第一个匹配到的周五就是距离当前时间最近的周五,无需额外排序
- 对拿到的日期对象调用格式化方法,按需输出指定格式的日期字符串
修改后代码
最小修改版本(保留原代码简写风格)
仅调整核心遍历逻辑、新增格式化逻辑,和原代码结构完全一致:
# 输出格式默认采用年-月-日(yyyy-MM-dd),可按需修改ToString内的格式串 $Date = @(@(0..-6 | % {$(Get-Date).AddDays($_)} | ? {$_.DayOfWeek -ieq "Friday"})[0]).ToString("yyyy-MM-dd")
可读增强版本
用完整cmdlet名称替换别名,方便后续维护:
$targetFriday = @( 0..-6 | ForEach-Object { (Get-Date).AddDays($_) } | Where-Object { $_.DayOfWeek -ieq "Friday" } )[0].ToString("yyyy-MM-dd") # 打印验证结果 Write-Host "过去一周内最近的周五日期:$targetFriday"
自定义配置说明
- 日期输出格式可按需替换
ToString()内的格式字符串:- 输出带时分秒:
"yyyy-MM-dd HH:mm:ss" - 输出中文格式:
"yyyy年MM月dd日"
- 输出带时分秒:
- 逻辑默认规则:如果运行代码当天恰好是周五,会直接返回当天日期,符合「最近日期」的判定逻辑
内容的提问来源于stack exchange,提问作者noni
相关产品推荐
相关产品推荐

