package study.exam;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Calendar;
public class Ex04 {
public static void main(String[] args) {
new Ex04().start();
}
// 시작
public void start() {
String birthday = inputBirthday(); // 생일 입력
long span = getSpan(birthday); // 남은 시간(밀리초단위) 구하기
printResult(span); // 출력하기
}//end start()
// 생일 입력받는 메서드
public String inputBirthday() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String birthday = "";
System.out.print("생일입력(월/일) : ");
try {
birthday = reader.readLine();
} catch (Exception e) {
System.out.println("오류 발생! 프로그램을 다시 실행하세요.");
}
return birthday;
}
// 생일까지 남은 tick값 구하기
public long getSpan(String birthday) {
String[] birthList = birthday.split("/");
int birthMonth = Integer.parseInt(birthList[0]);
int birthDay = Integer.parseInt(birthList[1]);
Calendar curCal = Calendar.getInstance();
Calendar birthCal = Calendar.getInstance();
birthCal.set(curCal.get(Calendar.YEAR), birthMonth-1, birthDay,0,0,0);
long birthTime = birthCal.getTime().getTime();
long currTime = curCal.getTime().getTime();
long span = 0;
if(birthTime < currTime) { // 생일이 이미 지난 경우
birthCal.set(Calendar.YEAR, curCal.get(Calendar.YEAR)+1);
birthTime = birthCal.getTime().getTime();
}
span = birthTime - currTime; // 생일과 현재시각과의 차이값(tick값)
return span;
}//end getSpan()
// 결과 출력하기
public void printResult(long span) {
System.out.printf("생일까지 남은 일수는 %d 일\n", span/1000/60/60/24L);
System.out.printf("생일까지 남은 시간은 %,d 시간\n", span/1000/60/60L);
System.out.printf("생일까지 남은 분은 %,d 분\n", span/1000/60L);
System.out.printf("생일까지 남은 초는 %,d 초\n", span/1000L);
}
}