首页 > 解决方案 > Powershell 日期范围

问题描述

我想创建一个变量,其中包含yyyy_MM_dd格式中的日期列表,距给定日期一周。

我当前的代码有效,但效率不高或非常干净。理想情况下,最早的日期(以下示例中的 -6 天)将是一个单独的变量,$lastDate = '-6'以便我可以快速进行调整,同时仍然让脚本从$lastDate.

我计划使用这个变量来查找包含特定格式的日期的路径,所以如果输出是字符串而不是真正的“日期”就可以了。我不想使用日期过滤器,Get-ChildItem因为文件路径的实际日期与路径名不准确。

当前脚本:

$range = (Get-Date).AddDays(-6).ToString('yyyy_MM_dd'), (Get-Date).AddDays(-5).ToString('yyyy_MM_dd'), (Get-Date).AddDays(-4).ToString('yyyy_MM_dd'), (Get-Date).AddDays(-3).ToString('yyyy_MM_dd'), (Get-Date).AddDays(-2).ToString('yyyy_MM_dd'), (Get-Date).AddDays(-1).ToString('yyyy_MM_dd'), (Get-Date).ToString('yyyy_MM_dd')

这将返回所需的结果:

2019_11_28
2019_11_29
2019_11_30
2019_12_01
2019_12_02
2019_12_03
2019_12_04

谁能建议一种更清洁或更有效的方法来做到这一点?

标签: powershelldate

解决方案


也许像下面这样?

$range = -6..0 | 
    ForEach-Object { (Get-Date).AddDays($_).ToString('yyyy_MM_dd') }
$range
2019_11_28
2019_11_29
2019_11_30
2019_12_01
2019_12_02
2019_12_03
2019_12_04

推荐阅读