포맷 설정부터 날짜 계산 예제까지 한눈에 보기
관련 글
2024.02.19 - [개발(Dev)/JAVA] - [JAVA]자바 날짜 계산: 특정 날짜, 일수 더하기, 일수 빼기, 개월 차 구하기 완벽 정리
2024.06.27 - [개발(Dev)/JAVA] - [JAVA]자바 날짜 계산: 자바 8 이전과 이후의 모든 방법
2024.06.28 - [개발(Dev)/JAVA] - [JAVA]자바 8 이전 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기
2024.06.27 - [개발(Dev)/JAVA] - [JAVA]자바 8 이후 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기
1. 포맷형에 따른 현재날짜 구하기
SimpleDateFormat 클래스를 사용하여 지정된 포맷으로 현재 날짜를 출력하는 방법을 보여줍니다.
// 날짜 포맷 형식을 정의합니다.
String dateFormatType = "yyyyMMdd";
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 현재 날짜를 구합니다.
Date now = new Date();
// 현재 날짜를 지정된 포맷 형식에 맞게 변환합니다.
String today = simpleDateFormat.format(now);
// 변환된 현재 날짜를 출력합니다.
System.out.println(today);
2. 두 날짜의 개월 차이 구하기
두 날짜 간의 개월 수 차이를 계산하여 출력하는 방법을 설명합니다.
// 임의의 시작 날짜와 종료 날짜를 생성합니다.
Date startDate = new Date();
Date endDate = new Date();
// Calendar 객체를 사용하기 위해 Calendar 인스턴스를 생성합니다.
Calendar calStrDt = Calendar.getInstance();
Calendar calEndDt = Calendar.getInstance();
// 시작 날짜를 Calendar 객체에 설정합니다.
calStrDt.setTime(startDate);
// 시작일의 일(day), 월(month), 연(year)을 가져옵니다.
int strDayOfMonth = calStrDt.get(Calendar.DAY_OF_MONTH);
int strMonth = calStrDt.get(Calendar.MONTH);
int strYear = calStrDt.get(Calendar.YEAR);
// 종료 날짜를 Calendar 객체에 설정합니다.
calEndDt.setTime(endDate);
// 종료일의 일(day), 월(month), 연(year)을 가져옵니다.
int endDayOfMonth = calEndDt.get(Calendar.DAY_OF_MONTH);
int endMonth = calEndDt.get(Calendar.MONTH);
int endYear = calEndDt.get(Calendar.YEAR);
// 두 날짜의 일(day) 차이를 계산합니다.
int diffDays = calStrDt.getActualMaximum(Calendar.DAY_OF_MONTH) == strDayOfMonth && calEndDt.getActualMaximum(Calendar.DAY_OF_MONTH) == endDayOfMonth ? 0 : endDayOfMonth - strDayOfMonth;
// 두 날짜의 월(month) 차이를 계산합니다.
int diffMonths = endMonth - strMonth;
// 두 날짜의 연(year) 차이를 계산합니다.
int diffYears = endYear - strYear;
// 두 날짜의 총 개월 수 차이를 계산합니다.
double reDate = (double) (diffYears * 12 + diffMonths) + (double) diffDays / 31.0D;
// 결과를 출력합니다.
System.out.println(reDate);
Date startDate = new Date();
Date endDate = new Date();
new Date()는 예시를 들기 위한 값이다. 원하는 날짜를 입력하면 된다.
Calendar calStrDt = Calendar.getInstance();
Calendar calEndDt = Calendar.getInstance();
Calendar instance 생성한다.
Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없다.
Calendar cal = new Calendar(); 불가
int diffDays = calStrDt.getActualMaximum(5) == strDayOfMonth && calEndDt.getActualMaximum(5) == endDayOfMonth ? 0 : endDayOfMonth - strDayOfMonth;
getActualMaximum로 해당 월의 마지막일자 구한다.
3. 원하는 개월만큼 더한 특정날짜 구하기
특정 날짜에 원하는 개월 수를 더하여 새로운 날짜를 계산하고 출력하는 방법을 설명합니다.
// 날짜 포맷 형식, 날짜 문자열, 추가할 개월 수를 정의합니다.
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int month = 7;
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 문자열을 Date 객체로 변환합니다.
Date date = simpleDateFormat.parse(dt);
// Calendar 객체를 사용하기 위해 Calendar 인스턴스를 생성합니다.
Calendar cal = Calendar.getInstance();
// Date 객체를 Calendar 객체에 설정합니다.
cal.setTime(date);
// 원하는 개월 수를 더합니다.
cal.add(Calendar.MONTH, month);
// 결과 날짜를 포맷 형식에 맞게 변환합니다.
String reDate = simpleDateFormat.format(cal.getTime());
// 결과를 출력합니다.
System.out.println(reDate);
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int month = "7";
dateFormatType, dt, month는 예시를 들기 위한 값이다. 원하는 값을 입력하면 된다.
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(2, month);
Calendar instance 생성하고 setTime 메서드를 호출해서 포맷 적용한 날짜를 세팅해 준다.
현재 시간을 date로 설정해 준다.
4. 원하는 일수 만큼 더한 특정날짜 구하기
특정 날짜에 원하는 일수를 더하여 새로운 날짜를 계산하고 출력하는 방법을 설명합니다.
// 날짜 포맷 형식, 날짜 문자열, 추가할 일 수를 정의합니다.
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int day = 7;
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 문자열을 Date 객체로 변환합니다.
Date date = simpleDateFormat.parse(dt);
// Calendar 객체를 사용하기 위해 Calendar 인스턴스를 생성합니다.
Calendar cal = Calendar.getInstance();
// Date 객체를 Calendar 객체에 설정합니다.
cal.setTime(date);
// 원하는 일 수를 더합니다.
cal.add(Calendar.DAY_OF_MONTH, day);
// 결과 날짜를 포맷 형식에 맞게 변환합니다.
String reDate = simpleDateFormat.format(cal.getTime());
// 결과를 출력합니다.
System.out.println(reDate);
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int month = "7";
dateFormatType, dt, day는 예시를 들기 위한 값이다. 원하는 값을 입력하면 된다.
5. 원하는 일수 만큼 뺀 특정날짜 구하기
특정 날짜에서 원하는 일수를 빼서 새로운 날짜를 계산하고 출력하는 방법을 설명합니다.
// 날짜 포맷 형식, 날짜 문자열, 뺄 일 수를 정의합니다.
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int day = 7;
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 문자열을 Date 객체로 변환합니다.
Date date = simpleDateFormat.parse(dt);
// Calendar 객체를 사용하기 위해 Calendar 인스턴스를 생성합니다.
Calendar cal = Calendar.getInstance();
// Date 객체를 Calendar 객체에 설정합니다.
cal.setTime(date);
// 원하는 일 수를 뺍니다.
cal.add(Calendar.DAY_OF_MONTH, -day);
// 결과 날짜를 포맷 형식에 맞게 변환합니다.
String reDate = simpleDateFormat.format(cal.getTime());
// 결과를 출력합니다.
System.out.println(reDate);
String dateFormatType = "yyyyMMdd";
String dt = "20240219";
int day = "7";
dateFormatType, dt, day는 예시를 들기 위한 값이다. 원하는 값을 입력하면 된다.
6. 특정날짜 비교
두 날짜를 비교하여 어느 날짜가 더 빠른지 또는 동일한지를 확인하는 방법을 설명합니다.
// 날짜 포맷 형식, 시작일 문자열, 종료일 문자열을 정의합니다.
String dateFormatType = "yyyyMMdd";
String strDate = "20240219";
String endDate = "20240319";
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 시작일과 종료일 문자열을 Date 객체로 변환합니다.
Date from = simpleDateFormat.parse(strDate);
Date to = simpleDateFormat.parse(endDate);
// 두 날짜를 비교합니다. from이 to보다 이전이면 음수, 같으면 0, 이후이면 양수를 반환합니다.
int compare = from.compareTo(to);
// 비교 결과를 출력합니다.
System.out.println(compare);
7. 두 날짜의 일수차이 구하기
두 날짜 간의 일수 차이를 계산하여 출력하는 방법을 설명합니다.
// 날짜 포맷 형식, 시작일 문자열, 종료일 문자열을 정의합니다.
String dateFormatType = "yyyyMMdd";
String strDate = "20240219";
String endDate = "20240319";
// SimpleDateFormat 객체를 생성하고 포맷 형식을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 시작일과 종료일 문자열을 Date 객체로 변환합니다.
Date from = simpleDateFormat.parse(strDate);
Date to = simpleDateFormat.parse(endDate);
// 두 날짜의 차이를 밀리초 단위로 계산합니다.
long diff = to.getTime() - from.getTime();
// 밀리초 단위의 차이를 일수로 변환합니다.
long re = diff / 86400000L;
// 결과를 출력합니다.
System.out.println(re);
8. 특정날짜의 마지막 일자 구하기
주어진 날짜가 해당 월의 마지막 일자인지 확인하고, 맞지 않으면 해당 월의 마지막 일자로 변경하는 방법을 설명합니다.
// 임의의 날짜 문자열을 정의합니다.
String dt = "20240219";
String reDate = null;
// 날짜 문자열의 일(day) 부분이 29, 30, 31일이 아닌 경우 그대로 사용합니다.
if (!dt.substring(6, 8).equals("29")
&& !dt.substring(6, 8).equals("30")
&& !dt.substring(6, 8).equals("31")) {
reDate = dt;
} else {
// Calendar 객체를 사용하여 월의 마지막 일자를 구합니다.
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(dt.substring(0, 4)), Integer.parseInt(dt.substring(4, 6)) - 1, 1);
int DayOfMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 날짜 문자열의 일(day) 부분이 월의 마지막 일자보다 큰 경우, 마지막 일자로 설정합니다.
if (Integer.parseInt(dt.substring(6, 8)) > DayOfMonth) {
reDate = dt.substring(0, 6) + DayOfMonth;
} else {
reDate = dt;
}
}
// 결과를 출력합니다.
System.out.println(reDate);
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(dt.substring(0, 4)), Integer.parseInt(dt.substring(4, 6)) - 1, 1);
int DayOfMonth = cal.getActualMaximum(5);
dt의 년, 월 및 1일로 세팅하고 getActualMaximum 메서드로 dt 월의 마지막일자 구한다
관련 글
2024.02.19 - [개발/JAVA] - [JAVA]자바 날짜 계산: 특정 날짜, 일수 더하기, 일수 빼기, 개월 차 구하기 완벽 정리
2024.06.27 - [개발/JAVA] - [JAVA]자바 날짜 계산: 자바 8 이전과 이후의 모든 방법
2024.06.28 - [개발/JAVA] - [JAVA]자바 8 이전 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이 요일 구하기
2024.06.27 - [개발/JAVA] - [JAVA]자바 8 이후 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이 요일 구하기
여기까지 읽어주셔서 진심으로 감사드립니다.
이 글이 마음에 드셨다면, 우측 아래 하트(공감)를 눌러 응원의 표시를 부탁드려요.
여러분의 소중한 관심과 사랑이 큰 힘이 됩니다. 감사합니다!
'개발(Dev) > JAVA' 카테고리의 다른 글
[JAVA]자바 8 이전 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기 (0) | 2024.06.29 |
---|---|
[JAVA]자바 날짜 계산: 자바 8 이전과 이후의 모든 방법 (0) | 2024.06.28 |
자바 API 문서 (0) | 2024.02.16 |
이클립스와 톰캣에서 POST 요청 데이터 길이 제한을 해결하는 방법 (0) | 2024.02.16 |
[JAVA]자바 JSP로 구현하는 간단한 장바구니 (0) | 2018.10.30 |