[java] Date 클래스

심심이·2024년 2월 3일
0

java

목록 보기
31/46

Date


        Date now = new Date();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyyyy-MM-dd HH:mm:ss");
        //SimpleDateFormat 인스턴스가 생성된 시점으로부터 이전 80년 /이후 20년 이래로 날짜를 조정

        // "yy-MM-dd" 패턴을 사용하면 24-02-03, yyy-MM-dd => 2024-02-03
        // yyyy-MM-dd => 2024-02-03 ...  yyyyyy-MM-dd => 002024-02-03  ...

        System.out.println("현재시각 >" + now);
        //Sat Feb 03 23:05:38 KST 2024
        System.out.println("현재시각 >" + simpleDateFormat.format(now));
        //현재시각 > 2024-02-03 23:05:38

        String currentTime = String.format("%tF %tp %tT %tA %tZ", now, now, now, now, now);  // %t는 time
        System.out.println("현재시각 > " + currentTime);
        //현재시각 > 2024-02-03 오후 23:10:01 토요일 KST

        /*
            <참고>
            날짜 타입 format         설명
            --------------------------------------------------
            %tF              날짜를 yyyy-mm-dd 형식으로 포맷해주는 것
            %tT              날짜의 시각을 HH:MM:SS 형식으로 포맷해주는 것
            %tp              오전, 오후를 출력
            %tA              요일명 출력
            %tY              4자리 년도만 출력
            %tB              월의 이름(January, February ...)출력
            %tm              월의 01,02,03 ~~ 10,11,12 로 출력
            %td              일수를 1~31 로 출력
            %te              %td와 동일함
            %tk              시간을 0~23 으로 출력
            %tl              시간을 1~12 으로 출력
            %tM              분을 00~59 으로 출력
            %tS              초를 00~59 으로 출력
            %tZ              타임존을 출력(한국은 KST로 나옴).
        */
    }

유효성 검사

	sdformat = new SimpleDateFormat("yyyyMMdd");
		
		sdformat.setLenient(false);
		// false 로 해주어야만 입력한 값을 날짜 타입으로 변경할때 날짜로 되지 못하는 값일 경우 오류가 발생한다.
		// 날짜로 파싱될 때 허술하게 하지 말고 엄격하게 하라고 설정해주는 것이라고 생각하면 된다. 

문자열을 날짜 형태로 변환하기

		try {
		 //	 Date d = sdformat.parse("19980430");
		 	 Date d = sdformat.parse("19980431");
			 System.out.println(d);
		 //  Thu Apr 30 00:00:00 GMT+09:00 1998	 
		} catch (ParseException e) {
		 //	e.printStackTrace();
			System.out.println(">> 달력에 존재하지 않는 값입니다. <<");
		}

2개의 날짜 비교하기

1. compareTo()

date1.compareTo(date2); 
/*			   
date1 날짜와 date2 날짜가 동일하면 0을 반환하고,   
date1 날짜가 date2 날짜 보다 이전 날짜인 경우 0보다 작은 값을 반환하고, (<0)
반대로 date1 날짜가 date2 날짜 보다 이후 날짜인 경우 경우 0보다 큰 값을 반환한다. (>0)
*/

2. Date.before()

  date1.before(date2);
/*			   
date1 날짜가 date2 날짜 보다 이전 날짜인 경우 true를 반환하고, 
동일한 날짜이거나 이후 날짜인 경우 false를 반환한다.
*/

3. date1.after()

 date1.after(date2);
/*			   
date1 날짜가 date2 날짜 보다 이후 날짜인 경우 true를 반환하고, 
동일한 날짜이거나 이전 날짜인 경우 false를 반환한다.
*/

통합 예시 >>

try {
			String str_date1 = "19950704";
			String str_date2 = "19980301";
		
			Date date1 = sdformat.parse(str_date1);
			Date date2 = sdformat.parse(str_date2);
			
			// === 날짜 비교하기 === //
			/* 
			   >> Date 클래스에서 제공하는 compareTo() 메소드 <<
			   
			      date1.compareTo(date2);
			   
	              date1 날짜와 date2 날짜가 동일하면 0을 반환하고,
	              date1 날짜가 date2 날짜 보다 이전 날짜인 경우 0보다 작은 값을 반환하고, 
	              반대로 date1 날짜가 date2 날짜 보다 이후 날짜인 경우 경우 0보다 큰 값을 반환한다. 
			*/
			 if(date1.compareTo(date2) < 0) {
				 System.out.println(str_date1 +" 이 " + str_date2 +" 보다 이전날짜 입니다.");  
			 }
			 else if(date1.compareTo(date2) == 0) {
				 System.out.println(str_date1 +" 와 " + str_date2 +" 은 동일한 날짜 입니다."); 
			 }
			 else {
				 System.out.println(str_date1 +" 이 " + str_date2 +" 보다 이후날짜 입니다."); 
			 }
			 // 19950704 이 19980301 보다 이전날짜 입니다.
			 
			 /*
			   >> Date 클래스에서 제공하는 Date.before 메소드 <<
	           date1.before(date2);
	         
	           date1 날짜가 date2 날짜 보다 이전 날짜인 경우 true를 반환하고, 
	           동일한 날짜이거나 이후 날짜인 경우 false를 반환한다.
			 */
			 if(date1.before(date2)) {
				 System.out.println(str_date1 +" 이 " + str_date2 +" 보다 이전날짜 입니다.");  
			 }
			 else {
				 System.out.println(str_date1 +" 와 " + str_date2 +" 은 동일한 날짜 이거나 "+str_date1+" 이 "+str_date2+" 보다 이후날짜 입니다."); 
			 }
			 // 19950704 이 19980301 보다 이전날짜 입니다.
			 
			 
			 /*
			   >> Date 클래스에서 제공하는 Date.after 메소드 <<
	              date1.after(date2);
	             
	              date1 날짜가 date2 날짜 보다 이후 날짜인 경우 true를 반환하고, 
	              동일한 날짜이거나 이전 날짜인 경우 false를 반환한다.
			 */
			 if(date2.after(date1)) {
				 System.out.println(str_date2 +" 이 " + str_date1 +" 보다 이후날짜 입니다.");  
			 }
			 else {
				 System.out.println(str_date2 +" 와 " + str_date1 +" 은 동일한 날짜 이거나 "+str_date2+" 이 "+str_date1+" 보다 이전날짜 입니다."); 
			 }
			 // 19980301 이 19950704 보다 이후날짜 입니다.
			 
		} catch (ParseException e) {
		 //	e.printStackTrace();
			System.out.println(">> 달력에 존재하지 않는 값입니다. <<");
		}
		
		
profile
개발하는 심심이

0개의 댓글

관련 채용 정보