C#
datetime

【備忘録】2月周辺のDateTime.AddMonths

主に2月末の処理が気になったので、うるう年の2016年で試した。


DateTime.AddMonths(1)

2016/01/01 0:00:00 + 1Month = 2016/02/01 0:00:00

2016/01/02 0:00:00 + 1Month = 2016/02/02 0:00:00
2016/01/03 0:00:00 + 1Month = 2016/02/03 0:00:00
:
:
2016/01/26 0:00:00 + 1Month = 2016/02/26 0:00:00
2016/01/27 0:00:00 + 1Month = 2016/02/27 0:00:00
2016/01/28 0:00:00 + 1Month = 2016/02/28 0:00:00
2016/01/29 0:00:00 + 1Month = 2016/02/29 0:00:00
2016/01/30 0:00:00 + 1Month = 2016/02/29 0:00:00
2016/01/31 0:00:00 + 1Month = 2016/02/29 0:00:00
2016/02/01 0:00:00 + 1Month = 2016/03/01 0:00:00
2016/02/02 0:00:00 + 1Month = 2016/03/02 0:00:00
2016/02/03 0:00:00 + 1Month = 2016/03/03 0:00:00
:
:
2016/02/26 0:00:00 + 1Month = 2016/03/26 0:00:00
2016/02/27 0:00:00 + 1Month = 2016/03/27 0:00:00
2016/02/28 0:00:00 + 1Month = 2016/03/28 0:00:00
2016/02/29 0:00:00 + 1Month = 2016/03/29 0:00:00
2016/03/01 0:00:00 + 1Month = 2016/04/01 0:00:00
2016/03/02 0:00:00 + 1Month = 2016/04/02 0:00:00
2016/03/03 0:00:00 + 1Month = 2016/04/03 0:00:00
:
:


DateTime.AddMonths(-1)

2016/02/01 0:00:00 - 1Month = 2016/01/01 0:00:00

2016/02/02 0:00:00 - 1Month = 2016/01/02 0:00:00
2016/02/03 0:00:00 - 1Month = 2016/01/03 0:00:00
:
:
2016/02/26 0:00:00 - 1Month = 2016/01/26 0:00:00
2016/02/27 0:00:00 - 1Month = 2016/01/27 0:00:00
2016/02/28 0:00:00 - 1Month = 2016/01/28 0:00:00
2016/02/29 0:00:00 - 1Month = 2016/01/29 0:00:00
2016/03/01 0:00:00 - 1Month = 2016/02/01 0:00:00
2016/03/02 0:00:00 - 1Month = 2016/02/02 0:00:00
2016/03/03 0:00:00 - 1Month = 2016/02/03 0:00:00
:
:
2016/03/26 0:00:00 - 1Month = 2016/02/26 0:00:00
2016/03/27 0:00:00 - 1Month = 2016/02/27 0:00:00
2016/03/28 0:00:00 - 1Month = 2016/02/28 0:00:00
2016/03/29 0:00:00 - 1Month = 2016/02/29 0:00:00
2016/03/30 0:00:00 - 1Month = 2016/02/29 0:00:00
2016/03/31 0:00:00 - 1Month = 2016/02/29 0:00:00
2016/04/01 0:00:00 - 1Month = 2016/03/01 0:00:00
2016/04/02 0:00:00 - 1Month = 2016/03/02 0:00:00
2016/04/03 0:00:00 - 1Month = 2016/03/03 0:00:00
:
:


結論

月の範囲を超える場合は、月内にうまく丸めてくれる。

周知の事実だろうけど考えたことがなかったので備忘録として。