PowerShell: 日付・時刻の計算(加算と減算)

PowerShellで日付や時刻の計算を行う場合、 .NET Framework DateTimeクラスの日時計算用のメソッドを利用します。 年・月・日・時間・分・秒・ミリ秒それぞれの計算用メソッドがあるので これらを使って加算・減算を行います。

まずはメソッド名とその用途をまとめて紹介します。

メソッド名用途
AddYears
AddMonths
AddDays
AddHours時間
AddMinutes
AddSeconds
AddMillisecondsミリ秒

それぞれのメソッドの引数に加算・減算したい数値を指定します。 加算する場合は正数、減算する場合は負数(マイナスの数値)を指定。

2022年1月1日を基準としてAddYearsメソッドを使って5年後、 5年前の年月日を取得してみます。

$d = [datetime]"2022/1/1"

$d
# 加算
$d.AddYears(5)
# 減算
$d.AddYears(-5)

# 実行結果
2022年1月1日 0:00:00
2027年1月1日 0:00:00
2017年1月1日 0:00:00

AddMonthsを使って、 2022年1月31日の1カ月後と1カ月前の日付を取得してみます。 2月は日数が少ないので、その辺りはどうなるのでしょうか?

$d = [datetime]"2022/1/31"

$d

$d.AddMonths(1)

$d.AddMonths(-1)

# 実行結果
2022年1月31日 0:00:00
2022年2月28日 0:00:00
2021年12月31日 0:00:00

1月31日の1か月後は2月28日、つまり月末の日付となっています。 2022年はうるう年なので28日までです。

次にAddDaysを使って2022年1月1日の1日前を計算します。

$d = [datetime]"2022/1/1"

$d

$d.AddDays(-1)

# 実行結果
2022年1月1日 0:00:00
2021年12月31日 0:00:00

計算結果は前年(2021年)の12月31日になっています。 このように年や月をまたぐ場合も自動で計算してくれるので助かます。

まとめとして、 AddYears・AddMonths・AddDays・AddHours・AddMinutes・AddSeconds 各メソッドを使って加算・減算してみます。

基準日時を「2022年1月1日 00:00:00」として、 各メソッドに「1」を加算・減算した場合にどうなるかの結果です。 結果は「yyyy/MM/dd HH:mm:ss」形式で表示しています。

種類メソッド結果
AddYears(1)2023/01/01 00:00:00
AddYears(-1)2021/01/01 00:00:00
AddMonths(1)2022/02/01 00:00:00
AddMonths(-1)2021/12/01 00:00:00
AddDays(1)2022/01/02 00:00:00
AddDays(-1)2021/12/31 00:00:00
時間AddHours(1)2022/01/01 01:00:00
時間AddHours(-1)2021/12/31 23:00:00
AddMinutes(1)2022/01/01 00:01:00
AddMinutes(-1)2021/12/31 23:59:00
AddSeconds(1)2022/01/01 00:00:01
AddSeconds(-1)2021/12/31 23:59:59

(まとめ記事: PowerShell 日付・時刻

PowerShell