我需要PowerShell功能才能将23个月添加到当前日期,但将日期设置为第一个。
我尝试了一个while循环来减去日子,但我没有运气。我有月份部分想通了,但我需要将$ current.day设置为常量1。
true
答案 0 :(得分:5)
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) }
答案 1 :(得分: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语句和代码将其输出到屏幕,如果不需要,可以忽略它。