PowerShell日期函数问题

时间:2017-04-11 18:22:56

标签: powershell date

我需要PowerShell功能才能将23个月添加到当前日期,但将日期设置为第一个。

我尝试了一个while循环来减去日子,但我没有运气。我有月份部分想通了,但我需要将$ current.day设置为常量1。

true

2 个答案:

答案 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语句和代码将其输出到屏幕,如果不需要,可以忽略它。