【发布时间】:2021-11-25 19:34:33
【问题描述】:
我目前正在为备份磁带编写 PowerShell 脚本,并尝试计算磁带的归还日期。我们的供应商会在周五取回磁带。保留期为 4 周、12 个月和 3 年。每月的磁带在每月的第一个星期一,所以我目前正在使用每月的磁带,它将在 12 个月后返回。我如何计算从 2021 年 10 月 8 日星期五开始的 12 个月,但要确保返回日期也是星期五?
#Calculate Friday - Vaulting Date
$Friday = (Get-Date).AddDays(5-((Get-Date).DayOfWeek.value__)).ToString("MM/dd/yyyy")
#Calculate Return Dates
$Weekly = (Get-Date).AddDays(5-((Get-Date).DayOfWeek.value__)).AddDays(28).ToString("MM/dd/yyyy")
$Monthly = (Get-Date).AddDays(5-((Get-Date).DayOfWeek.value__)).AddMonths(12).ToString("MM/dd/yyyy")
$Yearly = (Get-Date).AddDays(5-((Get-Date).DayOfWeek.value__)).AddYears(3).ToString("MM/dd/yyyy")
$Monthly 当前返回 10/08/2022,即我想要的日期之后的星期六。我想我也会遇到与 $Yearly 相同的问题,如果是闰年怎么办?任何帮助将不胜感激。
【问题讨论】:
-
顺便说一句:您不需要在方法调用中使用
.value__属性,因为PowerShell 自动 转换枚举值,例如Sunday(来自枚举@987654321 @) 到它们的基础数字(整数)。 -
另一边:最好用single
Get-Date调用锁定开始日期,其结果存储在变量中,然后可以在以后的计算中使用.除了更高效之外,它还避免了在Get-Date调用之间不经意间跨越日历日或 DST 转换边界的问题(尽管在很大程度上是假设性的)。
标签: powershell date dayofweek