Develop/JAVA

[Java] 오늘날짜 구하기 날짜 더하기 빼기

issuemaker99 2024. 11. 14. 16:12
728x90

아래는 Java에서 날짜 형식을 사용자가 지정할 수 있도록 수정한 코드입니다. DateTimeFormatter를 사용해 날짜 형식을 지정할 수 있으며, 날짜 연산 시에도 지정된 형식을 유지하면서 출력할 수 있습니다.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class DateExample {
    
    // 오늘 날짜 구하기 (사용자 지정 형식)
    public static String getToday(String format) {
        LocalDate today = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return today.format(formatter);
    }

    // 날짜에 연산 적용하기 (사용자 지정 형식 및 연산 단위 지정)
    public static String calculateDate(String date, String format, int amount, ChronoUnit unit) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        LocalDate parsedDate = LocalDate.parse(date, formatter);
        
        LocalDate resultDate;
        
        // 양수일 때는 더하고 음수일 때는 빼기
        if (amount >= 0) {
            resultDate = parsedDate.plus(amount, unit);
        } else {
            resultDate = parsedDate.minus(Math.abs(amount), unit);
        }
        
        return resultDate.format(formatter);
    }

    public static void main(String[] args) {
        // 날짜 형식 지정 예시
        String format = "yyyy-MM-dd";

        // 오늘 날짜 출력
        String today = getToday(format);
        System.out.println("오늘 날짜: " + today);

        // 특정 날짜를 지정하고 형식에 맞추어 연산하기
        String date = "2023-11-14";
        
        // 1년 후
        String plusOneYear = calculateDate(date, format, 1, ChronoUnit.YEARS);
        System.out.println("1년 후: " + plusOneYear);

        // 2개월 후
        String plusTwoMonths = calculateDate(date, format, 2, ChronoUnit.MONTHS);
        System.out.println("2개월 후: " + plusTwoMonths);

        // 10일 후
        String plusTenDays = calculateDate(date, format, 10, ChronoUnit.DAYS);
        System.out.println("10일 후: " + plusTenDays);

        // 1년 전
        String minusOneYear = calculateDate(date, format, -1, ChronoUnit.YEARS);
        System.out.println("1년 전: " + minusOneYear);

        // 2개월 전
        String minusTwoMonths = calculateDate(date, format, -2, ChronoUnit.MONTHS);
        System.out.println("2개월 전: " + minusTwoMonths);

        // 10일 전
        String minusTenDays = calculateDate(date, format, -10, ChronoUnit.DAYS);
        System.out.println("10일 전: " + minusTenDays);
    }
}

 

설명

  1. getToday(String format): 사용자가 지정한 날짜 형식으로 오늘 날짜를 반환합니다.
    • DateTimeFormatter.ofPattern(format)을 사용하여 원하는 형식의 포맷터를 생성합니다.
    • 예를 들어 format이 "yyyy-MM-dd"라면 오늘 날짜는 2024-11-14 형식으로 반환됩니다.
  2. calculateDate(String date, String format, int amount, ChronoUnit unit): 특정 날짜에 년, 월, 일 단위로 더하거나 빼는 연산을 수행합니다.
    • format을 사용해 날짜 문자열을 LocalDate 객체로 변환합니다.
    • amount가 양수이면 더하고, 음수이면 빼는 방식으로 날짜를 조정합니다.
    • 연산 결과를 다시 지정된 형식으로 반환합니다.

실행 결과 예시

위 코드를 실행했을 때 결과는 다음과 같습니다:

오늘 날짜: 2024-11-14
1년 후: 2024-11-14
2개월 후: 2024-01-14
10일 후: 2023-11-24
1년 전: 2022-11-14
2개월 전: 2023-09-14
10일 전: 2023-11-04
LIST