글
이번에는, 문자열 형태의 두 날짜 사이의 차이 (일자) 를 구하는 예제를 설명드리겠습니다.
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) throws ParseException { final String DATE_PATTERN = "yyyy-MM-dd"; final int MILLI_SECONDS_PER_DAY = 24 * 60 * 60 * 1000; String inputStartDate = "2017-02-27"; String inputEndDate = "2017-03-03"; SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); Date startDate = sdf.parse(inputStartDate); Date endDate = sdf.parse(inputEndDate); long difference = (endDate.getTime() - startDate.getTime()) / MILLI_SECONDS_PER_DAY; System.out.println(difference); } }
1 ~ 3 라인
예제에 필요한 class 들을 import 하는 문장입니다.
7 라인
SimpleDateFormat 객체를 생성할 때 필요한 날짜 패턴 상수입니다. 저는 편의상 "yyyy-MM-dd" 로 지정하였습니다. 입맞에 맞게 변행해서 사용하시면 됩니다.
8 라인
두 날짜 사이의 간격을 구할 때 밀리초 단위로 계산을 할 것이므로 이를 일자로 변경하기 위해서 24 * 60 * 60 * 1000 으로 나누어 줘야 합니다. (밀리초 / (24 * 60 * 60 * 1000) -> 일자) 이 때 필요한 24 * 60 * 60 * 1000 을 상수로 지정하였습니다.
9 ~ 10 라인
차이 간격을 구할 두 날짜 문자열입니다. 7 라인에서 지정한 날짜 패턴의 형태로 두 날짜를 지정해 주면 됩니다. 기본적으로 시작 날짜보다 끝 날짜보다 이전일 수 없다고 가정하겠습니다.
11 라인
String 형태의 날짜를 Date 형태의 날짜로 편하게 변환하기 위해서 필요한 SimpleDateFormat 객체를 "yyyy-MM-dd" 패턴으로 생성합니다.
12 ~ 13 라인
SimpleDateFormat 객체의 parse 메소드를 통해서 9 ~ 10 라인의 두 String 형태의 날짜를 Date 형태의 날짜로 변경합니다. 이 parse 메소드는 ParseException 을 throws 하고 있습니다. 이 예제에서는 예외 처리가 중심이 아니기 때문에 저 또한 6 라인의 throws ParseException 구문을 통해서 예외 처리를 회피하도록 하겠습니다.
14 ~ 15 라인
Date 객체의 getTime 메소드를 통해서 해당 날짜를 밀리초로 받을 수 있습니다. 끝 날짜의 밀리초 - 시작 날짜의 밀리초 연산을 통해서 두 날짜 사이의 밀리초 간격을 구하고 이를 24 * 60 * 60 * 1000 으로 나누어 주면 일자 간격을 구할 수 있습니다. 구한 일자 간격을 출력합니다.
[실행 결과]
(SimpleDateFormat 클래스 참고)
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
(Date 클래스 참고)
https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
'4.2) 실습' 카테고리의 다른 글
문자열 형태의 시작 날짜와 끝 날짜 사이의 날짜들 구하기 (시작, 끝 날짜 포함) (0) | 2017.03.29 |
---|---|
JAVA 환경변수 설정하기 (0) | 2016.02.05 |
JAVA SE JDK (Java Development Kit) 최신 버전 설치하기 (0) | 2016.02.04 |
RECENT COMMENT