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);
}
}
설명
- getToday(String format): 사용자가 지정한 날짜 형식으로 오늘 날짜를 반환합니다.
- DateTimeFormatter.ofPattern(format)을 사용하여 원하는 형식의 포맷터를 생성합니다.
- 예를 들어 format이 "yyyy-MM-dd"라면 오늘 날짜는 2024-11-14 형식으로 반환됩니다.
- 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
'Develop > JAVA' 카테고리의 다른 글
[Java] 메모리 관리 및 가비지 컬렉션: 개념과 예제 (2) | 2024.11.17 |
---|---|
[Java] 크로스 사이트 스크립트 (XSS) 취약점 조치방법 (7) | 2024.10.30 |
[Spring Framework] application.yml 파일에서 값 암호화 (7) | 2024.10.28 |
[Java] Spring Security 에서 SameSite 설정방법 (PG사 결제 시 리턴 후 세션 끊김현상 해결) (6) | 2024.10.24 |
[Java] BigDecimal 나누기 소수점 올림, 버림, 반올림 사용방법 (5) | 2024.10.21 |