비슷한 작업을하는 안드로이드 SDK에서 아무것도 찾지 못했습니다 (Google은 GWT 프레임 워크에 하나를 포함 시켰습니다 ... 아마도 그 중 하나를 꺼낼 수있을 것입니다).
하지만 너무 어렵지 않기 때문에 비슷한 일을하는 DateUtils 클래스를 직접 작성했습니다. 2010 년 13 월 8 일 또는 10:30 PM과 같은 날짜가 아닌 '어제'또는 '2 분 전'과 같은 Gmail에서도 사용되는 친숙한 날짜 형식이 마음에 듭니다. 에 관하여 어떤 시간 차이에
내가
public static String getDifference(Date sessionStart, Date sessionEnd) {
if(sessionStart == null)
return "[corrupted]";
Calendar startDateTime = Calendar.getInstance();
startDateTime.setTime(sessionStart);
Calendar endDateTime = Calendar.getInstance();
endDateTime.setTime(sessionEnd);
long milliseconds1 = startDateTime.getTimeInMillis();
long milliseconds2 = endDateTime.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
long hours = diff/(60 * 60 * 1000);
long minutes = diff/(60 * 1000);
minutes = minutes - 60 * hours;
long seconds = diff/(1000);
if (hours > 0) {
return hours + " hours " + minutes + " minutes";
} else {
if (minutes > 0)
return minutes + " minutes";
else {
return seconds + " seconds";
}
}
}
.. 그리고 여기있는 따라 단위 테스트를 수행하면 올바른 기능 확인하기 위해 쓴 :
@Test
public void testGetDifference() {
// hours and minutes
Date startDate = DateUtils.createDateInstance("01.01.2010 12:00:00");
Date endDate = DateUtils.createDateInstance("01.01.2010 13:12:00");
String difference = DateUtils.getDifference(startDate, endDate);
assertNotNull(difference);
assertEquals("1 hours 12 minutes", difference);
// minutes
startDate = DateUtils.createDateInstance("01.01.2010 12:00:00");
endDate = DateUtils.createDateInstance("01.01.2010 12:02:00");
difference = DateUtils.getDifference(startDate, endDate);
assertNotNull(difference);
assertEquals("2 minutes", difference);
// seconds
startDate = DateUtils.createDateInstance("01.01.2010 12:00:00");
endDate = DateUtils.createDateInstance("01.01.2010 12:00:15");
difference = DateUtils.getDifference(startDate, endDate);
assertNotNull(difference);
assertEquals("15 seconds", difference);
difference = DateUtils.getDifference(null, endDate);
assertEquals("[corrupted]", difference);
}
당신은 조정 할 수 있습니다 그것을 조금 또한 하드 코딩 된 문자열 ("시간", "분", ...)을 외부화하여 모든 것을 쉽게 현지화 할 수있게합니다 (문제인 경우).
참고로, 아마도 JodaTime lib를 살펴볼 필요가 있습니다. 어쩌면 그들은 비슷한 구현을 가지고 있을지 모르지만 나는 (나 자신)을 검증하지 않았다.
감사합니다! ... 나는 함께 뭔가를 해킹해야 할 것이라고 생각했습니다. 귀하의 코드는 훌륭한 시작입니다 .. 단지 일, 주, 월, 년 코드를 추가해야하는 것처럼 보입니다. 예. 예! 장난! : p – kefs
다음 클래스를 수정하여 사용했습니다. http://www.technojeeves.com/joomla/index.php/free/71-difference-between-two-dates-in-java – kefs
Nice. 그냥 메모로. main() 명령을 사용하지 않고 단위 테스트를 작성하여 콘솔에 기록하십시오. 그렇게하면 코드가 올바르게 작동하는지 여부를 확인할 수 있습니다. :) – Juri