我需要PowerShell函数将23个月添加到当前日期,但将日期设置为第一个。
我尝试了一个while循环来减去日子,但我没有运气。我有月份部分想通了,但我需要将$ current.day设置为常量1。
function Update-Date {
$current = Get-Date
$current.AddMonths(11)
$current.AddYears(1)
$current.Day(1)
}
有更好,更简洁的方法(参见mklement0的答案),但作为一个学习机会,试试这个:
$val = Update-Date
Write-Host $val
function Update-Date {
$current = Get-Date
$current = $current.AddMonths(11)
$current = $current.AddYears(1)
$current = $current.AddDays(-($current.Day) + 1)
return $current
}
请注意,AddMonths,AddYears,AddDays等不会修改原始日期,而是返回一个新日期。您需要每次都存储它,然后执行下一个操作。您可以只减去当月的当天,然后再添加1以将其恢复到当月的第1天,而不是循环。我添加了一个return语句和代码将它输出到屏幕,如果不需要你可以忽略它。
Get-Date
cmdlet可以通过其-Day
,-Month
和-Year
参数(类似于时间部分)调整指定日期(的副本)的组成部分,因此请尝试以下方法:
Get-Date -Day 1 (Get-Date).Date.AddMonths(23)
请注意使用.Date
,它会删除日期中的时间部分。
包含在您的函数中(为了与PowerShell的命名约定重新命名,请注意该函数输出结果日期):
function Get-UpdateDate { Get-Date -Day 1 (Get-Date).Date.AddMonths(23) }