개발자 미니민의 개발스터디

[JAVA] 자바 - Date 클래스 (getTime, SimpleDateFormat)

by mini_min

[JAVA]
자바 - Date 클래스


 

✔️ Date 클래스란?

날짜를 표현하는 클래스로, 객체간의 날짜정보를 주고받을 때 사용한다. 여러 생성자가 선언되어 있지만, 대부분 Date() 생성자만 주로 생성한다.

 

🏷️ 특정 문자열 포맷으로 날짜 얻기

특정 문자열 얻기 위해서 SimpleDateFormat 클래스를 사용!

 

- long getTime()

1970년 1월 1일 GMT로부터 밀리 세컨드 수를 돌려준다.

- String toString()

Date 객체를 String yyyy-mm-dd 형식으로 변환한다.

 

Date date = new Date();
		
System.out.println(date.toString());	//미국식으로 나옴
	//System.out.println(date.toLocaleString());	//사용 권장xxx
		
//1970.1.1. 0:0:0를 기준으로 밀리초로 환산
	long t = date.getTime();
	System.out.println(t);

 

 

 

✔️ SimpleDateFormat

Date 객체의 날짜를 문자열로 추출할 때 사용! (Date 객체 생성이 전제조건일 수 있겠다고 생각든다)

 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일);
String s = sdf.format(date);

System.out.println(s);



//String -> Date
		s = "2022-07-22";
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		
		
		// 예외 : 프로그램 실행 도중 발생하는 에러
		// 예외를 예측하는 것이 필요해짐..
		// try와 catch 사이에 예외가 발생할 수 있는 코드 작성하기!
		try {
			// 예외가 발생할 가능성이 있는 실행코드를 입력
			
			Date date3 = sdf2.parse(s);
			System.out.println(date3);
			
		} catch (ParseException e) {
			// 예외가 발생할 경우 실행할 코드 작성.
			e.printStackTrace();
		}

 

💡 String -> Date 변환
s 라는 스트링이 있을때, Date 로 변환하는 것은 parse() 메소드를 사용한다.
Date 클래스 객체로 만들기 위해서, sdf2 심플데이트스트링의 parse 로 스트링 s를 변환하면 된다. 
💡예외 처리 try ~ catch
예외는, 프로그램 실행 도중 발생하는 에러를 말한다. 예외를 예측하는 것이 필요해질 때, try ~ catch 사이에 예외가 발생할 수 있는 코드를 작성하면 된다! 

⭕ parse() 메소드를 예외발생 부분에 넣으면, catch 부분에 ParseException 넣어야 좋은 코드 :)

 

 

 

✔️ 두 날짜 사이의 관계 (SimpleDateFormat 사용)

Date 객체의 getTime 를 이용해서 '현재 시간 - 있는 시간' 을 처리하고, 밀리 세컨드이기 때문에 day 로 곱해서 계산해야한다.

 

public static void main(String[] args) {
		String birth = "1996-04-02";
		
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
        
		try {
			//예외 내포하고 있는 코드
			Date date2 = sdf.parse(birth);
			
			//두 날짜 사이의 간격
			long dif = (date.getTime() - date2.getTime()) / (1000*60*60*24);
			System.out.println("살아온 날 수 : " + dif);
			
            
		} catch (Exception e) {
			// 예외가 발생할 때 실행할 코드
			e.printStackTrace(); // 예외 메세지 출력
		}
		

	}

 

💡 밀리세컨 -> day 로 계산하기
= 밀리세컨이기 때문에 : x1000 / 초 : x60 / 분 : x60 / 시간 : x24

 

 

 

✔️ isValidDate , isLeapYear, toDaysLater

윤년 구하기 힘들었는데 정말 유용한 메소드가 나타났다...ㅎㅎ

먼저, 유효한 값인지 확인하는 메소드인 isValidDate ! Date 객체에 해당 메소드를 호출하면 true, false 값 반환

isLeapYear 는 윤년 여부를 확인해주는 메소드이다.

toDaysLater(Date, 인자) 는 인자값 만큼, Date 객체를 ~일 이후 날짜로 출력한다!

 

String s = null;
		boolean b;
		
		DateUtil util = new DateUtil();
		
		s = "2000-10-10";
		b = util.isValidDate(s);
		System.out.println(s+ " : " + b);
		
		s = "2000-l0-32";
		b = util.isValidDate(s);
		System.out.println(s+ " : " + b);
		
		s = "2000-07-20";
		b = util.isLeapYear(s);
		System.out.println(s + " 윤년 여부 : " + b);
			// Date.Util 에서 예외를 발생시켰기 때문에 오류가 뜸
		
		s = "2022-07-22";
		//100일 후
		String s2 = util.toDaysLater(s, 100);
		System.out.println(s2);

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기