2013-02-14 5 views
0

Попытка сделать небольшую программу обратного отсчета в Java.Java - Календарь/разница по дате - Найти разницу в секундах

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

Мне нужны дни, часы, минуты и секунды. Я не уверен, почему мой расчет округляется до четного целого ... 163 в этом примере, а не 163.xx?

Вот мой код:

import java.util.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class CalcData { 

    Calendar cal1; 
    Date today; 

    public CalcData() { 

     cal1 = new GregorianCalendar(); 
     today = new GregorianCalendar().getTime(); 

    } 

    public String calcDiff() { 

     cal1.set(2013, 6, 27, 7, 15, 0); 
     double theDays = calcDays(cal1.getTime(), today); 
     return "" + theDays; 

    } 

    public double calcDays(Date d1, Date d2) { 

     double theCalcDays = (double) ((d1.getTime() - d2.getTime())/(1000 * 60 * 60 * 24)); 
     return theCalcDays; 

    } 
} 

Когда я запускаю это, как я уже сказал, я получаю результат: 163,0

Я бы подумать, если он использует миллисекунды, что это будет какая-то вид десятичной дроби. Я уверен, что это что-то простое, что мне не хватает, но просто не могу найти его!

Заранее благодарен!

ответ

0

Вы делите целое число на другое целое число. Вам нужно бросить их в два раза, прежде чем выполнять деление. Нравится

double theCalcDays = ((double) (d1.getTime() - d2.getTime()))/(1000 * 60 * 60 * 24); 
+0

Уверенный достаточно! Большое спасибо человеку. Рад, что это была простая ошибка. – cbaze19

+0

Это не сработает, если обе даты взяты из разных зон сохранения дневного света. В таком случае разница во времени будет X дней-1 и 23 часа :) – Antoniossss

+0

Действительно, в местах, где есть летнее время, есть один день в году, который составляет 23 часа, а один день - 25 часов. Однако внутри объекта date это значение в формате UTC. UTC имеет ТОЛЬКО 24 часа, и поэтому он работает. У вас всегда есть эта проблема, когда вы рассматриваете часовые пояса: двухчасовая телефонная конференция может начинаться и заканчиваться в тот же день в одном часовом поясе, и она может начинаться и заканчиваться в разные дни в другом часовом поясе. Они не согласны с количеством дней! Это не имеет никакого отношения к продолжительности, но вместо этого интерпретация времени в соответствии с этим часовым поясом. – AgilePro