Java - Milliseconds를 Hours, Minutes, Seconds 단위로 변환

JS · 21 Apr 2020

TimeUnit 클래스를 이용하면 Milliseconds를 쉽게 Hours, Minutes, Seconds 단위로 변환할 수 있습니다. 물론 Milliseconds를 직접 나눠서 시, 분, 초를 구할 수 있습니다.

TimeUnit으로 Milliseconds 변환

아래와 같이 TimeUnit은 milliseconds를 다른 단위로 변환하는 메소드를 제공합니다.

long milliseconds = 4000000;
long hours = TimeUnit.MILLISECONDS.toHours(milliseconds);
long minutes = TimeUnit.MILLISECONDS.toMinutes(milliseconds);
long seconds = TimeUnit.MILLISECONDS.toSeconds(milliseconds);

System.out.println("hours: " + hours);
System.out.println("minutes: " + minutes);
System.out.println("seconds: " + seconds);

결과

hours: 1
minutes: 66
seconds: 4000

이 외에, TimeUnit은 다음과 같이 다양한 시간 단위를 다른 단위로 변환해주는 API들도 제공합니다.

TimeUnit.SECONDS.toHours()
TimeUnit.SECONDS.toMinutes()
TimeUnit.DAYS.toMinutes()
TimeUnit.NANOSECONDS.toSeconds()

TimeUnit에서 지원하는 시간 단위들에 대해서 더 알고 싶으시면 Oracle - TimeUnit를 참고하세요.

직접 계산하여 변환

직접 Milliseconds를 seconds로 변환하고 이것을 minutes와 days로 변환할 수 있습니다.

아래 코드는 TimeUnit을 이용한 것과 동일한 결과를 출력합니다.

long milliseconds = 4000000;
long hours = (milliseconds / 1000) / 60 / 60;
long minutes = (milliseconds / 1000) / 60;
long seconds = (milliseconds / 1000);

System.out.println("hours: " + hours);
System.out.println("minutes: " + minutes);
System.out.println("seconds: " + seconds);

결과

hours: 1
minutes: 66
seconds: 4000

모든 단위를 함께 출력 (ex. 00:00:00)

위의 예제들은 milliseconds를 특정 시간 단위로 변환한 결과를 단순히 출력하였습니다.

"몇시 몇분 몇초"로 표현하려면 아래 코드처럼 %를 이용하면 됩니다.

long milliseconds = 4000000;
long hours = (milliseconds / 1000) / 60 / 60 % 24;
long minutes = (milliseconds / 1000) / 60 % 60;
long seconds = (milliseconds / 1000) % 60;

System.out.println("hours: " + hours + ", minutes: " + minutes + ", seconds: " + seconds);
System.out.format("%02d:%02d:%02d", hours, minutes, seconds);

결과를 보면 우리가 의도한 대로 출력이 되었습니다. format을 이용하여 00:00:00 형식으로 표현할 수도 있습니다.

hours: 1, minutes: 6, seconds: 40
01:06:40

참고