Long の代わりに double を使用してみてください。
public boolean checkDelayed(Date date1, Date date2)
{
double difference = (double) (date2.getTime() - date1.getTime());
if (difference / 1000d / 60d / 60d / 24d <= 4d)
{
return true;
}
return false;
}
最良の方法は、単純な数学を適用することです。あなたの状態はこれです:
difference / 1000L / 60L / 60L / 24L <= 4L
次のようにワークアウトします。
difference / 60L / 60L / 24L <= 4000L
difference / 60L / 24L <= 240000L
difference / 24L <= 14400000L
difference <= 345600000L
そこにあります。常に動作する単純な状態。
public boolean checkDelayed(Date date1, Date date2)
{
long difference = date2.getTime() - date1.getTime();
if (difference <= 345600000L)
{
return true;
}
return false;
}
このすべての理由は、long データ型が 10 進数値をサポートしていないためです。double に変換することで、10 進数値を維持できます。