cbw1030
기록하는 공간
cbw1030
전체 방문자
오늘
어제
  • 전체보기 (101)
    • Programming (99)
      • Java (19)
      • Servlet (10)
      • Spring Framework (13)
      • Javascript (22)
      • AWS (2)
      • 네트워크 (8)
      • 데이터베이스 (13)
      • 리눅스 (3)
      • 블록체인 (7)
      • 용어 정리 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 차원축소
  • Brightics Studio
  • 삼성SDS 브라이틱스
  • web
  • 브라이틱스 스튜디오 사용법
  • beautifulsoup
  • javascript
  • 삼성SDS
  • Brightics AI
  • 인공지능
  • 데이터 사이언스
  • 브라이틱스 튜토리얼
  • Brightics
  • 머신러닝
  • react
  • 브라이틱스 스튜디오
  • 크롤링
  • 브라이틱스
  • 데이터분석
  • 생활코딩

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cbw1030

기록하는 공간

[JAVA] 날짜와 시간 다루기(java.time)
Programming/Java

[JAVA] 날짜와 시간 다루기(java.time)

2019. 11. 9. 23:36
반응형

기본적으로 자바에서는 날짜와 시간을 다루기 위해서 java.util.Date와 java.util.Calendar 클래스를 사용했지만, 사용에 불편함이 많아 JDK8 이후부터는 java.time 패키지의 클래스로 많은 부분이 대체되었다.

 

[ 날짜 및 시간 구하기 ]

LocalDate, LocalTime, LocalDateTime

가장 기본이 되는 클래스들로 각각 날짜, 시간, 날짜와 시간을 다루는 클래스이다.

new 키워드를 통해 직접적인 인스턴스 생성이 불가능하고 static 메서드를 이용하는 방식을 사용한다.

  • now() : 현재 날짜, 시간에 기반하여 인스턴스 생성
  • of() : 인자로 전달되는 특정 날짜, 시간에 기반한 인스턴스 생성
  • atTime() : 특정 시간정보에 기반해 LocalDateTime 인스턴스 생성

예제를 한 번 만들어보도록 하자.

public class DateTimeTest1 {

    public static void main(String[] args) {
        LocalDate d1 = LocalDate.now();
        LocalDate d2 = LocalDate.of(2019, 10, 10);

        LocalTime t1 = LocalTime.now();
        LocalTime t2 = LocalTime.of(7, 20, 20);

        System.out.printf("LocalDate.now() : %s\n", d1);
        System.out.printf("LocalDate.of(2019,10,10) : %s\n", d2);
        System.out.printf("LocalTime.now() : %s\n", t1);
        System.out.printf("LocalTime.of(7,20,20) : %s\n", t2);

        LocalDateTime dt1 = LocalDate.now().atTime(LocalTime.MIDNIGHT);
        LocalDateTime dt2 = LocalDate.now().atTime(LocalTime.MAX);

        System.out.printf("LocalDate.now().atTime(LocalTime.MIDNIGHT) : %s\n", dt1);
        System.out.printf("LocalDate.now().atTime(LocalTime.MAX) : %s\n", dt2);
    }

}

예제 실행 결과

  • 별도의 형식을 지정하지 않았기 때문에 해당 객체에서 제공하는 기본 형식으로 출력 된다.
  • now()는 현재 날짜 및 시간, of()는 특정 날짜 및 시간 객체 생성
  • LocalDate에 Time을 추가하려면 atTime()를 사용하며 LocalDateTime이 리턴됨
  • LocalTime.MIDNIGHT, MAX, MIN, NOON 등 사용 가능.

 

[ 형식 지정하기 ]

java.time.format 패키지의 클래스들이 사용되며 대표적인 것은 DateTimeFormatter 클래스이다.

  • ofLocalizedDate() : 현재 지역(국가)에 따른 기본 표기 형식으로 출력
  • ofPattern() : 인자로 특정 포맷을 지정

[ 날짜와 시간차이 계산하기 ]

보통 날짜와 시간이 많이 사용되는 부분은 월별로 데이터를 관리하거나 특정 기간의 데이터를 조회하거나 하는 등의 작업이다.

  • Period : 날짜 사이의 간격을 년/월/일 단위로 나타낸다.
  • Duration : 시간 사이의 간격을 나노초 단위로 나타낸다.

예제를 한 번 만들어보도록 하자.

public class DateTimeTest2 {
    public static void main(String[] args) {
        LocalDateTime dt1 = LocalDateTime.now();
        DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);

        System.out.println(dtf.format(dt1));
        System.out.println(dt1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

        System.out.println(dt1.plusDays(2));
        System.out.println(LocalTime.now().minusHours(3));
        System.out.println(Duration.ofMinutes(10).getSeconds());

        LocalTime start = LocalTime.of(11, 40, 50);
        LocalTime end = LocalTime.of(11, 42, 50);

        Duration duration = Duration.between(start, end);

        System.out.println("Seconds: " + duration.getSeconds());

        LocalDate startDate = LocalDate.of(1950, 9, 1);
        LocalDate endDate = LocalDate.of(2010, 9, 2);
        Period period = Period.between(startDate, endDate);

        System.out.println("Years: " + period.getYears());
        System.out.println("Months: " + period.getMonths());
        System.out.println("Days: " + period.getDays());
    }
}

실행 결과

  • Duration을 통해 시간 차이를 초단위로 계산
  • Period를 이용해 연/월/일 차이를 계산
반응형
저작자표시 (새창열림)

'Programming > Java' 카테고리의 다른 글

[Java] 참조형식과 호출되는 메서드의 관계  (0) 2020.07.04
[Java] Log4j에 대해 알아보자  (0) 2019.11.11
[JAVA] TCP 통신 소켓 프로그래밍(양방향 통신)  (0) 2019.08.02
[JAVA] TCP 통신 소켓 프로그래밍(단방향 통신)  (0) 2019.08.02
[JAVA] public class & class 차이  (5) 2019.04.02
    'Programming/Java' 카테고리의 다른 글
    • [Java] 참조형식과 호출되는 메서드의 관계
    • [Java] Log4j에 대해 알아보자
    • [JAVA] TCP 통신 소켓 프로그래밍(양방향 통신)
    • [JAVA] TCP 통신 소켓 프로그래밍(단방향 통신)
    cbw1030
    cbw1030

    티스토리툴바