hiflo
하이플로
hiflo
전체 방문자
오늘
어제
  • 분류 전체보기 (33)
    • 이런 분과 함께하고 싶어요 🙋‍♂️ (0)
    • Study in SSAFY (28)
      • Java Programming (2)
      • 이것이 자바다 (7)
      • Algorithm (2)
      • 면접을 위한 CS 전공지식 노트 (10)
      • Computer Science (7)
    • 기록들 (4)
    • 잡담 (1)

블로그 메뉴

  • 📷 Instagram
  • 🔧 관리자

인기 글

태그

  • SSAFY
  • 가중치코드
  • 자료구조
  • 프로그래밍패러다임
  • complements
  • ssafy 면접
  • 2의보수
  • SSAFY 9기
  • MVVM패턴
  • 선언형프로그래밍
  • 노출모듈패턴
  • 비가중치코드
  • 삼성청년SW아카데미
  • 프록시패턴
  • 전략패턴
  • 싱글톤패턴
  • 해시테이블
  • 비선형자료구조
  • 함수형프로그래밍
  • 절차형프로그래밍
  • 수치코드
  • 영문숫자코드
  • 이터레이터패턴
  • 디자인패턴
  • 팩토리패턴
  • 백준
  • 우선순위큐
  • mvp패턴
  • 선형자료구조
  • 싸피

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
hiflo

하이플로

[Java] Period 클래스로 날짜 차이 계산하기
Study in SSAFY/Algorithm

[Java] Period 클래스로 날짜 차이 계산하기

2023. 1. 12. 09:36

특정 타임스탬프를 기준으로 날짜 차이를 계산해야 할 때가 있습니다.

이 작업을 직접 구현하기에는 매 달마다 일 수가 다르고, 윤년까지 고려해야 하기 때문에 번거롭습니다.

 

Period 클래스의 between 메소드를 이용하면, 이를 간단히 해결할 수 있습니다.

LocalDateTime 객체에 [년, 월, 일, 시, 분, 초] 정보를 임의로 저장하여 테스트해보겠습니다. 

 

 

1. 평년일 때

public static void main(String[] args) {
        System.out.println("평년(2023) 테스트");

        LocalDateTime startDT = LocalDateTime.of(2023, 2, 28, 0, 0, 0);
        LocalDateTime endDT = LocalDateTime.of(2023, 3, 1, 0, 0, 0);

        System.out.println("시작일: " + startDT.toLocalDate());
        System.out.println("종료일: " + endDT.toLocalDate());

        Period diff = Period.between(startDT.toLocalDate(), endDT.toLocalDate());

        System.out.printf("두 날짜 사이 기간: %d년 %d월 %d일",
                diff.getYears(), diff.getMonths(), diff.getDays());
}

출력 결과

평년인 2023년 2월은 28일까지 존재하기 때문에, 3월 1일과 하루 차이가 납니다.

 

 

2. 윤년일 때

public static void main(String[] args) {
        System.out.println("윤년(2024) 테스트");

        LocalDateTime startDT = LocalDateTime.of(2024, 2, 28, 0, 0, 0);
        LocalDateTime endDT = LocalDateTime.of(2024, 3, 1, 0, 0, 0);

        System.out.println("시작일: " + startDT.toLocalDate());
        System.out.println("종료일: " + endDT.toLocalDate());

        Period diff = Period.between(startDT.toLocalDate(), endDT.toLocalDate());

        System.out.printf("두 날짜 사이 기간: %d년 %d월 %d일",
                diff.getYears(), diff.getMonths(), diff.getDays());
}

 

출력 결과

윤년인 2024년 2월은 29일까지 존재하기 때문에, 3월 1일과 이틀 차이가 납니다.

 

 


 

Period 클래스의 between 메소드를 사용하면 나름 정확한 결과를 얻을 수 있는 것을 확인해보았습니다.

개발 시 로그를 다룰 때나, 기업 코딩테스트에서 유용하게 쓰일 기능으로 보입니다.

 

 

 

'Study in SSAFY > Algorithm' 카테고리의 다른 글

[Java] 십진수를 이진수로 변환하기(int to String) / 이진수를 십진수로 변환하기(String to int)  (0) 2023.02.22
    'Study in SSAFY/Algorithm' 카테고리의 다른 글
    • [Java] 십진수를 이진수로 변환하기(int to String) / 이진수를 십진수로 변환하기(String to int)
    hiflo
    hiflo
    자극을 엔진으로 삼는

    티스토리툴바