1ヶ月前や後の日付を取得したい

今回は1ヶ月前や1ヶ月後の日付を
Calendarを使用し取得したいと思います。

 

まず、本日の日付を取得します。

Calendar calendar = Calendar.getInstance();

上記から月に対して"+1"か"-1"をします。


◆1ヶ月前

calendar.add(Calendar.MONTH, -1);

◆1ヶ月後

calendar.add(Calendar.MONTH, 1);


結果は以下で取得することが出来ます。
int month = calendar.get(Calendar.MONTH);

 

※ただ、ここで注意が必要です。

(普段考えることがあまりないと思いますが、)
本日が1月31日だった場合1ヶ月後はいつになるのでしょうか。

人によって其々だと思います。

 


上記の方法で1ヶ月後を求めた場合を以下にまとめました。

◆2018/01/31の1ヶ月後:2018/03/03

◆2018/02/28の1ヶ月後:2018/03/28

以上から、本日の日付が1ヶ月後に存在しない場合
+31日を行い繰り越しになります。

逆に存在する場合は繰り越しされずそのままの日付となります。

 

PJによって計算の仕方は変わると思うので、
注意して使用してみてください。

 

----------------------------------------------------

ちなみに、TargetSdkVersion26(Android8.0)から追加された
LocalDateTimeのplusMonthsは、
本日の日付が1ヶ月後に存在しない場合も
繰り越しせず月の最終日を設定してくれるそうです。

以下例。
◆2018/01/31の1ヵ月後:2018/02/28

◆2018/02/28の1ヵ月後:2018/02/28

----------------------------------------------------