반응형

Java 언어로 날짜를 출력하는 방법에 대해 알아보겠습니다.

이전에는 Date, Calendar 클래스를 활용하여 날짜를 입력했는데요,

Java1.8 버전부터 LocalDate, LocalTime, LocalDateTime 클래스를 사용할 수 있게 되었습니다.

 

따라서 Date, Calendar 사용법과 LocalDate, LocalTime, LocalDateTime 사용법에 대해 비교하고 알아보겠습니다.

 


 

1. Date, Calendar 예제

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = "2020-08-03 10:00:00";
boolean is_ended = false;

Date now = new Date();
Date deadline = formatter.parse(date);

int compare = now.compareTo(deadline);

if( compare > 0 ){
    // now > deadline
    is_ended = true;
    
}else if( compare < 0){
    // now < deadline

}else{
    // same
    
}

- 위 코드는 날짜를 현재 날짜와 비교하여 deadline을 넘었는지 확인하는 코드입니다.

- Date 클래스로 현재 날짜를 받아왔고, SimpleDateFormat 클래스로 날짜 포맷을 지정하고 비교했습니다.

 

- Calendar 클래스로 현재 날짜를 구하는 방법은 다음과 같습니다.

Calendar now = Calendar.getInstance();

 

 

2. LocalDate, LocalTime, LocalDateTime 예제

String date = "2020-08-03 10:00:00";
boolean is_ended = false;

LocalDate currentDate = LocalDate.now();
LocalDate compareDate = LocalDate.parse(date.substring(0,10));

if(currentDate.isAfter(compareDate)){
    is_ended = true;
    
} else {

}

- 위 코드는 1번의 코드와 같은 내용의 코드입니다.

- 같은 내용임에도 불구하고 코드가 더 간결해진 것을 확인할 수 있습니다.

- isAfter 함수를 활용하여 지정한 날짜를 현재 지났는지 체크할 수 있습니다.

 

 

3. LocalDate, LocalTime, LocalDateTime 차이점

- LocalDate : 날짜를 다루는 클래스 (예 : 2020-08-03)

- LocalTime : 시간을 다루는 클래스 (예 : 10:00:01.112)

- LocalDateTime : 날짜와 시간을 함께 다루는 클래스 (예 : 2020-08-03T10:00:01.112)

 

 

4. LocalDate, LocalTime, LocalDateTime 사용시 주의사항

- datetime 속성의 데이터베이스 컬럼에 날짜 저장시 시간을 지정하지 않으면 해당일 00:00:00으로 초기화됩니다.

(예 : 2020-08-03 00:00:00)

 

- 입력자는 2020-08-03 24:00:00 으로 저장될 것을 예상하지만, 실제로는 02일 자정으로 저장되므로 주의가 필요합니다.

 

 

 

이상으로 Date, Calendar 클래스와 LocalDate, LocalTime, LocalDateTime 클래스에 대해 알아보았습니다.

 


 

반응형