2011-06-15 6 views
1

시간 형식이 HH : mm 인 문자열을 만들 때 현재 시간의 차이를 어떻게 변환 할 수 있습니까? 전의. 18:36HH 형식으로 긴 시간 차이 변환 : mm [Java]

나는 다음과 같이했으나 24 시간 형식이 아니며 마지막에 AM/PM을 추가하며 3 시간 후에 꺼집니다.

 java.util.Date today = new java.util.Date(); 
     java.sql.Timestamp ts1 = new java.sql.Timestamp(today.getTime()); 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss"); 
     java.util.Date parsedDate = dateFormat.parse(time); 
     java.sql.Timestamp ts2 = new java.sql.Timestamp(parsedDate.getTime()); 

     long nowTime = ts1.getTime(); 
     long givenTime = ts2.getTime(); 

     long timeDiff = givenTime - nowTime; 

     //convert to string 
     java.util.Date d = new java.util.Date(timeDiff); 
     result = DateFormat.getTimeInstance(DateFormat.SHORT).format(d); 
     //Outputs: 6:56 PM for example 
+1

가능한 복제본 [어떻게 Java에서 시간 범위를 계산하고 출력을 포맷 할 수 있습니까?] (http://stackoverflow.com/questions/635935/how-can-i-calculate-a-time-span-in -java-and-format-the-output) – Thilo

+0

또, 가능한 중복 : http://stackoverflow.com/questions/2949699/converting-time-from-hhmmss-to-hhmm-in-java –

답변

3

일단 쉬운 일이 지금처럼 그들을 빼기 다음 두 날짜에 대해 다음 getTime()를 호출하고 있습니다. 그 후에 1 초가 1k 밀리 초, 1 분이 60 초, 1h가 60 분이라는 것을 알고 있습니다.

2

Commons Lang DurationFormatUtils을 살펴보십시오.

또는 Joda-Time의 PeriodFormatter. 당신에게 두 번 사이의 밀리 초 단위의 차이를 제공해야

long timeDiff = today.getTime() - ts1.getTime() 

을 : 당신이 할 수있는

+0

정말 이유가 없습니다 타사 라이브러리를 사용합니다. – mre

+1

@mre : 실제로 Java의 끔찍한 날짜 및 달력 구현을 고려하면 제 3 자 라이브러리를 사용해야 할 모든 이유가 있습니다. 이 특정 인스턴스의 경우 vodnik의 대답으로 충분하지만 날짜 및/또는 시간을 다루는 경우는 드뭅니다. 너의 downvote를 만회하는 +1. –

관련 문제