JAVA

자바 8 이후 시간을 다루는 LocalDateTime 클래스와 DateTimeFormatter클래스

다오__ 2023. 6. 4. 20:42

날짜와 시간을 알려주고 그것을 원하는데로 볼 수 있게 하는 format형식이다.

 

java 8이전에는 Date클래스와 SimpleDateFormat클래스가 담당했지만 

java 8이후에는 더 이상 사용되지 않는다고 한다.

 

java.time 패키지의 LocalDateTime클래스, LocalDate, LocalTime등 더욱 강력한 기능을 가진 인터페이스들이 있다.

 

예를들어 LocalDateTime클래스와 DateTimeFormatter를 함계 사용하여 날짜와 시간을 포멧팅하고 파싱하는 예시를 보자

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        // 원하는 형식으로 날짜와 시간을 포맷팅
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = dateTime.format(formatter);
        System.out.println("포맷팅된 날짜와 시간: " + formattedDateTime);

        // 문자열을 날짜와 시간으로 파싱
        String dateTimeString = "2023-06-04 15:30:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println("파싱된 날짜와 시간: " + parsedDateTime);
    }
}

날짜와 시간 연도 시분초를 현재로 하여 포멧에 맞게끔 출력하는 기능 뿐만 아니라.

 

문자열을 원하는 포멧으로 출력할 수도 있다.

 

  • LocalDateTime클래스는 날짜와 시간정보 모두를 포함하는 클래스이다.
  • 연도, 월, 일, 시, 분, 초까지의 정보를 가지고 있다.
  • LocalDateTime 인스턴스는 변경 불가능한 객체이다.
  • 일시적인 사건이나 타임스탬프를 나타내는데 사용된다.
  • 예시 : 2023 6월 4일 15시 30분 0초

 

LocalDateTime의 자주 사용하는 메서드

 

  • now() : 현재 날짜와 시간을 나타내는 인스턴스를 반환
  • of(int year, int month, int dayOfMonth, int hour, int minute) : 주어진 데이터로부터 인스턴스를 반환                                                                                                                                                                                                                                                                                
  • getYear(),
  • getMonth(),
  • getDayOfMonth()등 : 해당 필드의 값을 읽어온다.                                                                                                                                                                                                                                                                                                                                                            
  • plusYears(long years),
  • plusMonths(long months),
  • plusSeconds(long seconds)등 : 주어진 시간단위를 기준으로 시간을 더한다. 예를들어 plusDays(5)는 현재 날짜와 시간에 5일을 더한 값을 반환한다.                                                                                                                                                                                                                                                                                                                                                      
  • minusYears(long years)
  • minusMonths(long months),
  • minusSeconds(long seconds)등 : 주어진 시간단위를 기준으로 시간을 뺀다.                                                                                                                                                                                                                                                                                                                
  • format(DateTimeFormatter formatter) : 지정된 형식으로 LocalDateTime인스턴스를 포맷팅한 문자열을 반환한다. DateTimeFormatter를 사용해 원하는 형식으로 날짜와 시간을 표현할 수 있다.                                                                                                                                                                                                                                                       
  • isBefore(LocalDateTime other) : 현재 LocalDateTime인스턴스가 주어진 인스턴스보다 이전인지를 확인한다.
  • isAfter(LocalDateTime other) : 현재 LocalDateTime인스턴스가 주어진 인스턴스보다 이후인지를 확인한다.                                                                                                                                                                                                                                                       

DateTimeFormatter에서 주로 사용하는 메서드

 

  • ofPattern(String pattern) : 주어진 패턴을 사용하여 DateTimeFormatter 인스턴스를 생성한다. 패턴은 날짜와 시간을 원하는 형식으로 표현하는데 사용된다. 예를들어, yyyy-MM-dd HH:mm:ss와 같은 패턴을 지정할 수 있다.                                                                                                                                                                                                                                                                                 
  • format(TemporalAccessor temporal) : 주어진 TemporalAccessor 인스턴스 (예: LocalDateTime)를 지정된 형식의 문자열로 포맷팅 한다. 포맷팅된 문자열을 반환한다.                                                                                                                                                                                                                        
  • parse(CharSequence text) : 주어진 문자열을 해석하여 TemporalAccessor 인스턴스로 파싱한다. 파싱된 결과로 LocalDateTime등의 인스턴스를 얻을 수 있다.