1000 * 60 * 60 * 24 * 30 приводит к отрицательному числу [дубликата]

На этот вопрос уже есть ответ:

Почему эти две операции умножения дают разные результаты? 2 ответа

Я пытаюсь вычислить 30 дней, умножая миллисекунды, однако результат постоянно оказывается отрицательным числом для значения days_30, и я не уверен почему.

Любые предложения очень ценятся!

КОД SNIPPET:

// check to ensure proper time has elapsed
                SharedPreferences pref = getApplicationContext()
                        .getSharedPreferences("DataCountService", 0);
                 long days_30 = 1000 * 60 * 60 * 24 * 30;
                 long oldTime = pref.getLong("smstimestamp", 0);
                long newTime = System.currentTimeMillis();
                 if(newTime - oldTime >= days_30){

начение @ days_30 приводит к: -1702967296

Приписка

 double days_30 = 1000 * 60 * 60 * 24 * 30;
                 double oldTime = pref.getLong("smstimestamp", 0);
                double newTime = System.currentTimeMillis();
                 if(newTime - oldTime >= days_30){

Результат в меньшем, но все же отрицательном числе. -1.702967296E9

Ответы на вопрос(4)

Ваш ответ на вопрос