*最大31日としたいので日数は31日固定
1日 = 24時間
1時間 = 60分
1分 = 60秒
1秒 = 1000ミリ秒
31 * 24 * 60 * 60 * 1000
期待している結果は 2678400000 だったがユニットテストを実行してみると -1616567296 になっていた。
よくみると IntelliJ で警告が表示されていることに気がつく。
Numeric overflow expression This inspection checks for expressions which overflow during computation, i.e.: a = 1.0/0.0;
Integer は 2147483647 が最大値なので、オーバーフローを起こしていた。
最大値が収まる Long 型にするため、乗算する際にミリ秒を L で Long 型にして、計算結果を暗黙的にキャストする。
31 * 24 * 60 * 60 * 1000L