2013-02-14 1 views
0

자바로 카운트 다운 프로그램을 조금 만들려고합니다.자바 - 일정/날짜 차이 - 초 단위로 차이 확인

나는 애플 리케이션의 날짜 부분의 차이를 찾는 일을하고 있으며, 어떤 이유로 나는 단지 일을 얻고있다.

일,시, 분 및 초가 필요합니다. 내 계산이 단지 정수로 반올림되는 이유가 확실하지 않습니다.이 예에서는 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 시간입니다. 그러나 날짜 개체 내부의 값은 UTC입니다. UTC는 24 시간 동안 만 작동하므로 작동합니다. 시간대를 고려할 때 항상이 문제가 발생합니다. 한 시간대의 같은 날에 2 시간 전화 회의가 시작되고 끝날 수 있으며 다른 시간대의 다른 요일에 시작되고 끝날 수 있습니다. 그들은 일수에 동의하지 않습니다! 그것은 지속 시간과 관련이 없으며, 대신 해당 시간대에 따른 시간의 해석입니다. – AgilePro