Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 생일 확인하고 축하 메시지 출력하기 : LocalDate·SimpleDateFormat 예제

이 글에서는 자바(Java)를 사용해 오늘이 생일인지 확인하고, 해당하는 경우 생일 축하 메시지를 출력하는 방법을 알아봅니다. 핵심 원리는 간단합니다. 현재 날짜와 미리 지정한 생일 날짜를 비교하여 두 값이 일치하면 축하 메시지를 화면에 출력하는 것입니다.

입력 및 출력 예시

프로그램의 동작 방식은 다음과 같습니다.

입력

생일 날짜 : 7월 15일

출력

오늘 날짜는 2021-12-20입니다.
오늘은 제 생일이 아닙니다.

구현 알고리즘

  1. 시작
  2. 출생 월(month_of_birth)과 출생 일(date_of_birth)을 저장할 변수를 선언합니다.
  3. 사용자로부터 필요한 값을 입력받거나, 코드 내에 직접 값을 정의합니다.
  4. LocalDate.now() 함수를 호출해 현재 날짜를 가져온 뒤 변수에 저장합니다.
  5. if 조건문으로 현재 월·일 값을 입력받은 월·일 값과 각각 비교합니다. 두 값이 모두 일치하면 조건식은 true가 됩니다.
  6. 비교 결과를 화면에 출력합니다.
  7. 종료

예제 1 : LocalDate 클래스 활용

java.time 패키지의 LocalDate 클래스를 사용하면 현재 시스템 날짜를 손쉽게 얻을 수 있습니다. getDayOfMonth() 메서드로 '일'을, getMonth() 메서드로 '월'을 추출한 후 생일 정보와 비교합니다.

import java.time.LocalDate;
import java.time.Month;

public class HappyBirthday {
   public static void main(String args[]) {
      int date_of_birth = 15;
      Month month_of_birth = Month.JULY;
      System.out.println("필요한 패키지를 모두 가져왔습니다");
      LocalDate current_date = LocalDate.now();
      System.out.println("오늘 날짜는 " + current_date);
      System.out.println("정의된 생일은 : " + date_of_birth + " " + month_of_birth);
      int date = current_date.getDayOfMonth();
      Month month = current_date.getMonth();
      if(date == date_of_birth && month == month_of_birth) {
         System.out.println("HAPPY BIRTHDAY TO YOU !!");
      } else {
         System.out.println("오늘은 생일이 아닙니다");
      }
   }
}

실행 결과

필요한 패키지를 모두 가져왔습니다
오늘 날짜는 2022-02-09
정의된 생일은 : 15 JULY
오늘은 생일이 아닙니다

예제 2 : SimpleDateFormat 클래스 활용

두 번째 방법은 java.text 패키지의 SimpleDateFormat을 이용해 날짜 문자열을 Date 객체로 파싱한 뒤, compareTo() 메서드로 두 날짜가 동일한지 비교합니다. 이 예제에서는 생일이 10월 15일로 미리 정의되어 있습니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Birthday {
   public static void main(String[] args) throws ParseException {
      SimpleDateFormat s = new SimpleDateFormat("MM-dd");
      Date today = s.parse("10-15");
      Date my_birthday_date = s.parse("10-15");
      System.out.println("생일은 10월 15일로 정의되었습니다");
      if (today.compareTo(my_birthday_date) == 0) {
         System.out.println("Happy Birthday!!");
      } else {
         System.out.println("오늘은 생일이 아닙니다");
      }
   }
}

실행 결과

생일은 10월 15일로 정의되었습니다
Happy Birthday!!

마무리 정리

두 가지 접근 방식의 차이는 다음과 같습니다.

  • LocalDate 방식 : 최신 java.time API를 사용하며, 연도와 무관하게 '월'과 '일'만 비교하므로 매년 반복되는 생일 확인에 적합합니다.
  • SimpleDateFormat 방식 : 문자열을 Date 객체로 변환해 비교하므로, "MM-dd"처럼 형식 패턴을 유연하게 지정할 수 있습니다.

실제 프로젝트에서는 스레드 안전성과 가독성 면에서 최신 날짜·시간 API인 java.time(LocalDate, Month 등)을 사용하는 것이 권장됩니다. 두 예제 모두 핵심 로직은 동일하다는 점을 기억하세요. 바로 '현재 날짜와 생일의 비교'입니다.