こちらの記事のPowerShell版をやってみる。
.ps1
$BaseDate = Get-Date -Year 2017 -Month 1 -Day 31
@(0..5) | %{$BaseDate.AddMonths($_).ToString("yyyy-MM-dd")}
Result
2017-01-31
2017-02-28
2017-03-31
2017-04-30
2017-05-31
2017-06-30
1/31に対して.AddMonths()
していくと、各月末日が表示される。
が、これはnヶ月足したら、その月は31日がなかったので繰り上げている様子。
ので、1ヶ月づつ加算していくと、
.ps1
$BaseDate = Get-Date -Year 2017 -Month 1 -Day 31
$tmpDate = $BaseDate
@(0..5) | %{
$tmpDate.ToString("yyyy-MM-dd")
$tmpDate = $tmpDate.AddMonths(1)
}
Result
2017-01-31
2017-02-28
2017-03-28
2017-04-28
2017-05-28
2017-06-28
2/28の翌月以降は各月28日になる。
各月末日が取りたい場合はこんな感じ?
.ps1
$BaseDate = Get-Date -Year 2017 -Month 2 -Day 1
@(0..5) | %{($BaseDate.AddMonths($_)).AddDays(-1).ToString("yyyy-MM-dd")}
Result
2017-01-31
2017-02-28
2017-03-31
2017-04-30
2017-05-31
2017-06-30