GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Java

날짜 시간 / Date => Calendar + SimpleDateFormat => LocalDate

Backcoder 2022. 7. 4. 20:41

< 날짜 / 시간 >

 

웹을 보면, 구매가 이루어진다던지, 글 등록을 완료한 시간이라던지, 로그인 한 시간이라던지, 

당시의 날짜/시간을 가져와 저장해야하는 경우가 많다. 

날짜/시간 클래스와 메소드는 아주 많이 사용하게 될 거라 생각이 든다. 

 

 

< 1. Date >     -  많이 안씀 ( deprecated ) 

 

Date d = new Date( );  초창기 버전인데 버려져 가는 추세라 한다. 

실제로 메소드보면 deprecated 줄그어진게 매우 많다. 

 

 

< 2. Calendar >  -  Date 개선버전  => SimpleDateFormat 과 연계해서 많이 쓰인다. 


Calendar cal = Calendar.getInstance( );   

 

 이렇게 객체 생성해야한다. ( new로는 안됨 )

( Calendar -=> getInstance 라는 static 메소드 보유 ) 
( Calendar 하위클래스 익명클래스 정의 + 객체리턴 의 과정을 거치는 모습이 숨겨져있다. ) 

Calnedar 객체는 날짜에 관해서 거의 모든 데이터 다 가지고있다. ( 뭘 좋아할지몰라 다준비해두고 )

여기서 필요한거 뽑아서 사용한다.  

cal.get(Calendar.YEAR);  
cal.get(Calendar.SECOND); 

 

이런식으로 .get(Calendar. ~~ ) 으로 뽑아 쓸 수 있다. 

 

=> SimpleDateFormat 하고 연계해서 많이 사용된다.   

< SimpleDateFormat > 날짜 패턴 정해주기 

 

SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss")
sdf.format(now);                     

 

("yyyy-MM-dd HH:mm:ss")

 

-  대소문자 구분 필수    (  기본모양   2020-12-13 16:25:31  )

HH - 24시간 단위 구분    /  hh - 12시간 단위 구분  // DD - 연도에서의 날짜 / 등등 대소문자에 따라 다른값이 나온다. 

(기본 포맷을 익혀두자. MM 만 대문자 + HH 는 24시간 용 나머지 소문자 )  


 ("yyyy-MM-dd a hh:mm:ss E ")      띄어쓰기로 구분    

a => 오전/오후 표시   => hh 12시간 구분이랑 세트로 같이 쓰자 

E => 요일 표시 

 

 

 

 

< 3. LocalDate / LocalDateTime >     => 깔끔한 신흥강자! 

 

캘린더도 많이 쓰인다지만, 오류도 있는 모양이고, 쓰기도 나름복잡한 면이 있다.   

해서 LocalDate  가 많은 사랑을 받고 있다. 

실제로 사용해보면, 가장 깔끔한 느낌을 받았다. 

 

 

LocalDate current = LocalDate.now();                     // 컴퓨터의 현재 날짜 정보
LocalDate myDate = LocalDate.of(1950, 06, 25);     // 직접 입력 기능도 쉽다.

        current.getYear( );
        current.getMonth( );                  // December 로 가져옴
        current.getMonthValue( );        // 12월 로 가져옴
        current.getDayOfMonth( );      // 6
        current.getDayOfWeek( );       // 요일


// 날짜까지만 필요하면 이거쓰면되고, 시간까지 필요할 때는 

LocalDateTime current = LocalDateTime.now( ); 
- 마찬가지로 getYear 등등 다 쓸 수 있고, 추가로 
current   =>  2022-07-04T16:00:51.159217100         
current.getHour => 15
current.getMinute => 54   / Second 등등 시간관련 된걸 뽑아 쓸 수 있다.  

 

Time 만 뽑기도 가능하다. 
LocalTime currenttime = LocalTime.now();
LocalTime mytime = LocalTime.of(6, 17);