PowerShell日期函数问题

问题描述 投票:1回答:2

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

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

function Update-Date {
    $current = Get-Date
    $current.AddMonths(11)
    $current.AddYears(1)
    $current.Day(1)
}
powershell date
2个回答
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语句和代码将它输出到屏幕,如果不需要你可以忽略它。


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) }
© www.soinside.com 2019 - 2024. All rights reserved.