반응형
개발을 하다 보면 시간에 관련된 내용은 필수적으로 사용되기 마련입니다.
이번에는 자바에서 특정 시간과 특정 시간 사이의 시간이 얼마나 되는지 확인하는 방법에 대해 알아보도록 하겠습니다.
다양한 형태로 시간을 비교할 일이 생기는데 이번 예제에서는 시간, 분의 데이터를 문자열로 받았다는 가정으로 진행했습니다.
예제를 통해 확인해보겠습니다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestClass {
public static void main(String[] args) {
try
{
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
// 비교할 시간 (문자열)
String timeStr1 = "06:50";
String timeStr2 = "12:10";
// 문자열 -> Date
Date date1 = sdf.parse(timeStr1);
Date date2 = sdf.parse(timeStr2);
// Date -> 밀리세컨즈
long timeMil1 = date1.getTime();
long timeMil2 = date2.getTime();
// 비교
long diff = timeMil2 - timeMil1;
long diffSec = diff / 1000;
long diffMin = diff / (1000 * 60);
System.out.println("시간 차이(초) : " + diffSec + "초");
System.out.println("시간 차이(분) : " + diffMin + "분");
}
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
우선 문자열의 시간 데이터를 Date 타입으로 바꾸기 위해 SimpleDateFormat을 사용합니다.
받는 문자열에 해당하는 포맷으로 선언하고( 예제에서 new SimpleDateFormat("HH:mm"); 부분 )
parse()를 사용해서 Date 형태로 바꿔줍니다.
그다음 Date 타입을 getTime()을 사용하여 밀리 세컨드로 바꿔줍니다.
그리고 long 타입으로 바꾼 밀리세컨드를 비교합니다.
** 예제에서 미래 값에서 과거 값을 뺀 값이 diff입니다.
마지막으로 두 시간의 간격 값을 구합니다.
비교한 결과 또한 밀리세컨드이기 때문에 1000으로 나누면 초단위, 초단위에서 60을 더 나누면 분단위가 됩니다.
처음 사용하게 되면 헷갈리거나 어색할 수 있습니다. 하지만 많은 상황에서 사용하게 되기 때문에 다양하게 자주 테스트하면서 익숙해지도록 하시는 것이 좋을 것 같습니다.
728x90
반응형
'IT, 개발 > JAVA' 카테고리의 다른 글
log4jdbc 로그 출력하기 (MySQL, Spring Framework, log4j) (0) | 2022.08.02 |
---|---|
Spring / MySQL 연동 에러 (Could not get JDBC Connection) (1) | 2022.08.01 |
Mac OS에서 이클립스 메소드 추적하기(함수 따라가기, 함수 호출되는 곳, 추적/역추적) (0) | 2022.07.18 |
JAVA - 리스트 순서 뒤집기, 오름차순, 내림차순(ArrayList 순서 정렬, 변경) (0) | 2022.07.14 |
JAVA - 함수 안에 자기 함수 호출 (재귀 함수 Recursive method) (0) | 2022.07.04 |