자바 8 이전의 날짜 및 시간 처리: 특정 날짜 설정, 차이 계산, 포맷 변경
자바 8 이전 버전에서는 LocalDate와 같은 클래스를 사용할 수 없으므로 java.util.Date와 java.text.SimpleDateFormat을 사용해야 합니다.
1. 현재 날짜와 시간 구하기
java.util.Date와 java.text.SimpleDateFormat을 사용하여 현재 날짜와 시간을 구할 수 있습니다.
1.1 현재 날짜 구하기
java.util.Date 클래스를 사용하여 현재 날짜를 구한 후, java.text.SimpleDateFormat을 사용하여 지정된 형식으로 출력합니다.
import java.util.Date;
import java.text.SimpleDateFormat;
public class CurrentDate {
public static void main(String[] args) {
// 현재 날짜를 구합니다.
Date currentDate = new Date();
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 현재 날짜를 지정된 형식으로 출력합니다.
System.out.println("현재 날짜: " + dateFormat.format(currentDate));
}
현재 날짜: 2024-06-28
- Date currentDate = new Date(): 시스템의 현재 날짜를 반환합니다.
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"): 날짜 형식을 지정합니다.
1.2 현재 시간 구하기
java.util.Date 클래스를 사용하여 현재 시간을 구한 후, java.text.SimpleDateFormat을 사용하여 지정된 형식으로 출력합니다.
import java.util.Date;
import java.text.SimpleDateFormat;
public class CurrentTime {
public static void main(String[] args) {
// 현재 시간을 구합니다.
Date currentTime = new Date();
// 시간 형식을 지정합니다.
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
// 현재 시간을 지정된 형식으로 출력합니다.
System.out.println("현재 시간: " + timeFormat.format(currentTime));
}
}
현재 시간: 15:45:32
- Date currentTime = new Date(): 시스템의 현재 시간을 반환합니다.
- SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"): 시간 형식을 지정합니다.
1.3 현재 날짜와 시간 구하기
java.util.Date 클래스를 사용하여 현재 날짜와 시간을 구한 후, java.text.SimpleDateFormat을 사용하여 지정된 형식으로 출력합니다.
import java.util.Date;
import java.text.SimpleDateFormat;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 날짜와 시간을 구합니다.
Date currentDateTime = new Date();
// 날짜와 시간 형식을 지정합니다.
SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 현재 날짜와 시간을 지정된 형식으로 출력합니다.
System.out.println("현재 날짜와 시간: " + dateTimeFormat.format(currentDateTime));
}
}
현재 날짜와 시간: 2024-06-28 15:45:32
- Date currentDateTime = new Date(): 시스템의 현재 날짜와 시간을 반환합니다.
- SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"): 날짜와 시간 형식을 지정합니다.
2. 특정 날짜 설정하기
java.util.Calendar를 사용하여 특정 날짜를 설정할 수 있습니다.
2.1 특정 날짜 설정하기
java.util.Calendar 클래스를 사용하여 특정 날짜를 설정한 후, java.text.SimpleDateFormat을 사용하여 지정된 형식으로 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class SpecificDate {
public static void main(String[] args) {
// Calendar 인스턴스를 생성합니다.
Calendar calendar = Calendar.getInstance();
// 특정 날짜를 설정합니다 (2023년 6월 28일).
calendar.set(2023, Calendar.JUNE, 28);
// 설정된 날짜를 Date 객체로 변환합니다.
Date specificDate = calendar.getTime();
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 특정 날짜를 지정된 형식으로 출력합니다.
System.out.println("특정 날짜: " + dateFormat.format(specificDate));
}
}
특정 날짜: 2023-06-28
- Calendar calendar = Calendar.getInstance(): 현재 날짜와 시간을 기준으로 Calendar 인스턴스를 생성합니다.
- calendar.set(2023, Calendar.JUNE, 28): Calendar 객체에 특정 날짜를 설정합니다
3. 날짜 차이 계산하기
java.util.Date와 java.util.Calendar를 사용하여 날짜 차이를 계산할 수 있습니다.
3.1 두 날짜 사이의 차이 계산하기 (연 월 일로 표현)
두 날짜 사이의 차이를 계산하여 연, 월, 일 단위로 출력합니다.
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateDifference {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 두 날짜를 설정합니다.
Date startDate = dateFormat.parse("2023-01-01");
Date endDate = dateFormat.parse("2023-06-28");
// 날짜를 Calendar 객체로 변환합니다.
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.setTime(startDate);
endCal.setTime(endDate);
// 날짜 차이를 계산합니다.
int years = endCal.get(Calendar.YEAR) - startCal.get(Calendar.YEAR);
int months = endCal.get(Calendar.MONTH) - startCal.get(Calendar.MONTH);
int days = endCal.get(Calendar.DAY_OF_MONTH) - startCal.get(Calendar.DAY_OF_MONTH);
// 결과를 조정합니다.
if (days < 0) {
months--;
startCal.add(Calendar.MONTH, 1);
days += startCal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if (months < 0) {
years--;
months += 12;
}
// 차이를 출력합니다.
System.out.println("날짜 차이: " + years + "년 " + months + "개월 " + days + "일");
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 부분을 주석처리하면 됩니다.
Date startDate = dateFormat.parse("2023-01-01");
Date endDate = dateFormat.parse("2023-06-28");
startCal.setTime(startDate);
endCal.setTime(endDate);
*/
날짜 차이: 0년 5개월 27일
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"): 날짜 형식을 지정합니다.
- Date endDate = dateFormat.parse("2023-06-28"): 종료 날짜를 설정합니다
- Date startDate = dateFormat.parse("2023-01-01"): 시작 날짜를 설정합니다.
3.1.1 일 차이가 음수인 경우
if (days < 0) {
months--;
startCal.add(Calendar.MONTH, 1);
days += startCal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
- if (days < 0): 일 차이가 음수인 경우, 종료 날짜의 일(day)이 시작 날짜의 일(day) 보다 작은 경우입니다.
- months--: 월(month) 차이를 하나 줄입니다. 이는 시작 날짜로부터 한 달 전으로 이동하는 것을 의미합니다.
- startCal.add(Calendar.MONTH, 1): 시작 날짜에 한 달을 더합니다. 이는 다음 달의 첫 번째 날짜로 이동하는 것을 의미합니다.
- days += startCal.getActualMaximum(Calendar.DAY_OF_MONTH): 현재 월의 최대 일 수를 일(day) 차이에 더합니다. 이는 일(day) 차이를 양수로 변환하기 위해 필요한 조정입니다.
3.1.2 월 차이가 음수인 경우
if (months < 0) {
years--;
months += 12;
}
- if (months < 0): 월 차이가 음수인 경우, 종료 날짜의 월(month)이 시작 날짜의 월(month)보다 작은 경우입니다.
- years--: 연(year) 차이를 하나 줄입니다. 이는 시작 날짜로부터 한 해 전으로 이동하는 것을 의미합니다.
- months += 12: 월(month) 차이에 12를 더합니다. 이는 월(month) 차이를 양수로 변환하기 위해 필요한 조정입니다.
3.2 두 날짜 사이의 차이 계산하기(일로 표현)
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateDifference {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 두 날짜를 설정합니다.
Date startDate = dateFormat.parse("2023-01-01");
Date endDate = dateFormat.parse("2023-06-28");
// 날짜 차이를 밀리초로 계산합니다.
long differenceInMilliSeconds = endDate.getTime() - startDate.getTime();
// 밀리초를 일로 변환합니다.
long differenceInDays = differenceInMilliSeconds / (24 * 60 * 60 * 1000);
// 차이를 출력합니다.
System.out.println("날짜 차이: " + differenceInDays + "일");
} catch (Exception e) {
e.printStackTrace();
}
}
}
날짜 차이: 178일
- Calendar 객체를 사용하여 날짜를 설정합니다.
- Calendar 객체를 Date 객체로 변환합니다.
- 두 Date 객체의 시간 차이를 밀리초 단위로 계산합니다.
- 밀리초를 일 수로 변환합니다. (1일 = 1000밀리초 * 60초 * 60분 * 24시간)
4. 날짜 더하기 및 빼기
날짜를 더하거나 빼는 방법은 java.util.Calendar 클래스의 add 메서드를 사용하면 됩니다. N일, N월, N년 단위로 더하거나 빼는 방법을 각각 알아보겠습니다.
4.1 날짜 더하기
N일, N월, N년 더하는 방법입니다.
4.1.1 N일 더하기
N일을 더한 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class AddDays {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에 10일을 더합니다.
calendar.add(Calendar.DAY_OF_MONTH, 10);
// 더한 날짜를 출력합니다.
System.out.println("10일 후의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
10일 후의 날짜: 2024-07-09
- DAY_OF_MONTH는 현재 달의 특정 일(day)을 가리킵니다.
- calendar.add(Calendar.DAY_OF_MONTH, 10): 날짜에 10일을 더합니다.
4.1.2 N월 더하기
N월을 더한 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class AddMonths {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에 2개월을 더합니다.
calendar.add(Calendar.MONTH, 2);
// 더한 날짜를 출력합니다.
System.out.println("2개월 후의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
2개월 후의 날짜: 2024-08-29
- calendar.add(Calendar.MONTH, 2): 날짜에 2개월을 더합니다.
4.1.3 N년 더하기
N년을 더한 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class AddYears {
public static void main(String[] args) {
try{
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에 3년을 더합니다.
calendar.add(Calendar.YEAR, 3);
// 더한 날짜를 출력합니다.
System.out.println("3년 후의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
3년 후의 날짜: 2027-06-29
- calendar.setTime(dateFormat.parse("2024-06-29"))는 날짜를 2024-06-29로 설정합니다.
- calendar.add(Calendar.YEAR, 3)는 설정된 날짜에 3년을 더합니다.
- 설정된 날짜와 3년 후의 날짜를 출력합니다.
4.2 날짜 빼기
N일, N월, N년 빼는 방법입니다.
4.2.1 N일 빼기
날짜에 N일을 뺀 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class SubtractDays {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에서 10일을 뺍니다.
calendar.add(Calendar.DAY_OF_MONTH, -10);
// 뺀 날짜를 출력합니다.
System.out.println("10일 전의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
10일 전의 날짜: 2024-06-19
4.2.2 N월 빼기
날짜에 N월을 뺀 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class SubtractMonths {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에서 2개월을 뺍니다.
calendar.add(Calendar.MONTH, -2);
// 뺀 날짜를 출력합니다.
System.out.println("2개월 전의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
2개월 전의 날짜: 2024-04-29
- calendar.setTime(dateFormat.parse("2024-06-29"))는 날짜를 2024-06-29로 설정합니다.
- calendar.add(Calendar.MONTH, -2)는 설정된 날짜에서 2개월을 뺍니다.
- 설정된 날짜와 2개월 전의 날짜를 출력합니다.
4.2.3 N년 빼기
날짜에 N년을 뺀 후, 결과를 출력합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class SubtractYears {
public static void main(String[] args) {
try {
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// 날짜를 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse("2024-06-29"));
// 설정된 날짜를 출력합니다.
System.out.println("설정된 날짜: " + dateFormat.format(calendar.getTime()));
// 날짜에서 3년을 뺍니다.
calendar.add(Calendar.YEAR, -3);
// 뺀 날짜를 출력합니다.
System.out.println("3년 전의 날짜: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
현재 날짜를 사용하려면 다음 코드를 주석 처리하면 됩니다.
calendar.setTime(dateFormat.parse("2024-06-29"));
*/
설정된 날짜: 2024-06-29
3년 전의 날짜: 2021-06-29
- calendar.setTime(dateFormat.parse("2024-06-29"))는 날짜를 2024-06-29로 설정합니다.
- calendar.add(Calendar.YEAR, -3)는 설정된 날짜에서 3년을 뺍니다.
- 설정된 날짜와 3년 전의 날짜를 출력합니다.
5. 시간 차이 계산하기
시간 차이를 계산하기 위해 Date 객체의 밀리초 값을 사용하여 차이를 계산할 수 있습니다.
5.1 두 시간 사이의 차이 계산하기
import java.util.Date;
import java.text.SimpleDateFormat;
public class TimeDifference {
public static void main(String[] args) {
try {
// 시간 형식을 지정합니다.
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
// 두 시간을 설정합니다.
Date startTime = timeFormat.parse("10:00:00");
Date endTime = timeFormat.parse("15:30:00");
// 시간 차이를 계산합니다.
long differenceInMilliSeconds = endTime.getTime() - startTime.getTime();
long differenceInHours = differenceInMilliSeconds / (1000 * 60 * 60);
long differenceInMinutes = (differenceInMilliSeconds / (1000 * 60)) % 60;
// 차이를 출력합니다.
System.out.println("시간 차이: " + differenceInHours + "시간 " + differenceInMinutes + "분");
} catch (Exception e) {
e.printStackTrace();
}
}
}
시간 차이: 5시간 30분
6. 날짜와 시간 형식 지정하기
java.text.SimpleDateFormat을 사용하여 날짜와 시간의 형식을 지정할 수 있습니다.
6.1 날짜 형식 지정하기
SimpleDateFormat 클래스를 사용하여 현재 날짜를 특정 형식으로 포맷하여 출력합니다.
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateFormat {
public static void main(String[] args) {
// 현재 날짜를 구합니다.
Date currentDate = new Date();
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
String formattedDate = dateFormat.format(currentDate);
// 형식이 지정된 날짜를 출력합니다.
System.out.println("형식이 지정된 날짜: " + formattedDate);
}
}
형식이 지정된 날짜: 2024/06/28
- Date currentDate = new Date(): 시스템의 현재 날짜를 반환합니다.
- new Date(): Date 클래스의 기본 생성자로, 현재 날짜와 시간을 가져옵니다.
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"): 날짜 형식을 지정합니다.
- new SimpleDateFormat("yyyy/MM/dd"): 날짜를 yyyy/MM/dd 형식으로 포맷하기 위해 SimpleDateFormat 객체를 생성합니다.
- String formattedDate = dateFormat.format(currentDate): Date 객체를 지정된 형식의 문자열로 변환합니다.
- dateFormat.format(currentDate): 현재 날짜를 yyyy/MM/dd 형식의 문자열로 변환합니다.
- System.out.println("형식이 지정된 날짜: " + formattedDate): 형식이 지정된 날짜를 출력합니다.
6.2 시간 형식 지정하기
import java.util.Date;
import java.text.SimpleDateFormat;
public class TimeFormat {
public static void main(String[] args) {
// 현재 시간을 구합니다.
Date currentTime = new Date();
// 시간 형식을 지정합니다.
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
String formattedTime = timeFormat.format(currentTime);
// 형식이 지정된 시간을 출력합니다.
System.out.println("형식이 지정된 시간: " + formattedTime);
}
}
형식이 지정된 시간: 15:45:32
7. 특정 월의 첫 번째/마지막 날짜와 일자 구하기
7.1 특정 월의 첫 번째 날짜와 마지막날짜 구하기
특정 연도와 월을 설정하여 해당 월의 첫 번째 날짜와 마지막 날짜를 구합니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class FirstAndLastDayOfMonth {
public static void main(String[] args) {
// 특정 연도와 월을 설정합니다. 예: 2024년 6월
int year = 2024;
int month = 6; // 월은 1부터 12까지 입력합니다. 예: 6월은 6
// Calendar 인스턴스를 생성하고 연도와 월을 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1); // Calendar.MONTH는 0부터 시작하므로 1을 빼줍니다.
// 해당 월의 첫 번째 날을 구합니다.
calendar.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String firstDay = dateFormat.format(calendar.getTime());
// 해당 월의 마지막 날을 구합니다.
int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, lastDay);
String lastDayStr = dateFormat.format(calendar.getTime());
// 결과를 출력합니다.
System.out.println(year + "년 " + month + "월의 첫 번째 날은 " + firstDay + "입니다.");
System.out.println(year + "년 " + month + "월의 마지막 날은 " + lastDayStr + "입니다.");
}
}
2024년 6월의 첫 번째 날은 2024-06-01입니다.
2024년 6월의 마지막 날은 2024-06-30입니다.
- calendar.set(Calendar.MONTH, month - 1)는 Calendar.MONTH가 0부터 시작하기 때문에 입력받은 월에서 1을 뺍니다.
- calendar.set(Calendar.DAY_OF_MONTH, 1)는 해당 월의 첫 번째 날을 설정합니다.
- calendar.getActualMaximum(Calendar.DAY_OF_MONTH)는 해당 월의 마지막 날을 구합니다.
- SimpleDateFormat을 사용하여 날짜 형식을 yyyy-MM-dd로 지정하고, 각각 첫 번째 날과 마지막 날을 출력합니다.
7.2 특정 월의 첫 번째 일자와 마지막 일자 구하기
특정 연도와 월을 설정하여 해당 월의 첫 번째 일자와 마지막 일자를 구합니다.
import java.util.Calendar;
public class FirstAndLastDayOfMonth {
public static void main(String[] args) {
// 특정 연도와 월을 설정합니다. 예: 2024년 6월
int year = 2024;
int month = 6; // 월은 1부터 12까지 입력합니다. 예: 6월은 6
// Calendar 인스턴스를 생성하고 연도와 월을 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1); // Calendar.MONTH는 0부터 시작하므로 1을 빼줍니다.
// 해당 월의 첫 번째 날을 구합니다.
int firstDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
// 해당 월의 마지막 날을 구합니다.
int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// 결과를 출력합니다.
System.out.println(year + "년 " + month + "월의 첫 번째 일자는 " + firstDay + "일입니다.");
System.out.println(year + "년 " + month + "월의 마지막 일자는 " + lastDay + "일입니다.");
}
}
2024년 6월의 첫 번째 일자는 1일입니다.
2024년 6월의 마지막 일자는 30일입니다.
- calendar.set(Calendar.MONTH, month - 1)는 Calendar.MONTH가 0부터 시작하기 때문에 입력받은 월에서 1을 뺍니다.
- calendar.getActualMinimum(Calendar.DAY_OF_MONTH)는 해당 월의 첫 번째 일자를 구합니다.
- calendar.getActualMaximum(Calendar.DAY_OF_MONTH)는 해당 월의 마지막 일자를 구합니다.
- 각각의 일자를 출력합니다.
8. 특정 날짜의 요일 구하기
8.1 특정 날짜의 요일 구하기 (정적 날짜 설정)
고정된 연도, 월, 일을 설정하여 해당 날짜의 요일을 구하는 코드입니다.
import java.util.Calendar;
public class DayOfWeekExample {
public static void main(String[] args) {
// 특정 날짜를 설정합니다. 예: 2024년 6월 28일
int year = 2024;
int month = 6; // 6월 (월은 1부터 12까지)
int day = 28;
// Calendar 인스턴스를 생성하고 연도, 월, 일을 설정합니다.
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day); // Calendar.MONTH는 0부터 시작하므로 1을 빼줍니다.
// 해당 날짜의 요일을 구합니다.
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 요일을 한국어로 출력하기 위해 switch문으로 처리합니다.
String dayInKorean;
switch(dayOfWeek) {
case Calendar.MONDAY: dayInKorean = "월요일"; break;
case Calendar.TUESDAY: dayInKorean = "화요일"; break;
case Calendar.WEDNESDAY: dayInKorean = "수요일"; break;
case Calendar.THURSDAY: dayInKorean = "목요일"; break;
case Calendar.FRIDAY: dayInKorean = "금요일"; break;
case Calendar.SATURDAY: dayInKorean = "토요일"; break;
case Calendar.SUNDAY: dayInKorean = "일요일"; break;
default: dayInKorean = "알 수 없음"; break;
}
// 결과를 출력합니다.
System.out.println(year + "-" + month + "- " + day + "의 요일: " + dayInKorean);
}
}
2024년 6월 28일의 요일: 금요일
8.2 특정 날짜의 요일 구하기 (문자열 날짜 파라미터 사용)
문자열로 주어진 날짜를 파라미터로 받아 해당 날짜의 요일을 구하는 코드입니다.
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class DayOfWeekExample {
public static void main(String[] args) {
// 파라미터로 받은 날짜를 설정합니다. 예: "2024-06-29"
String dateStr = "2024-06-29";
// 날짜 형식을 지정합니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
// 문자열을 날짜로 변환합니다.
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse(dateStr));
// 해당 날짜의 요일을 구합니다.
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 요일을 한국어로 출력하기 위해 switch문으로 처리합니다.
String dayInKorean;
switch(dayOfWeek) {
case Calendar.MONDAY: dayInKorean = "월요일"; break;
case Calendar.TUESDAY: dayInKorean = "화요일"; break;
case Calendar.WEDNESDAY: dayInKorean = "수요일"; break;
case Calendar.THURSDAY: dayInKorean = "목요일"; break;
case Calendar.FRIDAY: dayInKorean = "금요일"; break;
case Calendar.SATURDAY: dayInKorean = "토요일"; break;
case Calendar.SUNDAY: dayInKorean = "일요일"; break;
default: dayInKorean = "알 수 없음"; break;
}
// 결과를 출력합니다.
System.out.println(dateStr + "의 요일: " + dayInKorean);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
2024-06-29의 요일: 토요일
9. 년, 월, 일을 기준으로 며칠인지 계산하기
9.1년, 월, 일을 기준으로 며칠인지 계산하기
import java.util.Calendar;
public class ConvertDateToDays {
public static void main(String[] args) {
// 입력 날짜를 설정합니다.
int year = 2; // 년도
int month = 6; // 월 (1-12)
int day = 27; // 일 (1-31)
// 1년을 365일로 간주합니다.
int daysInYear = 365;
// 각 월의 일수를 배열로 설정합니다.
int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 입력받은 월의 유효성을 체크합니다.
if (month < 1 || month > 12) {
throw new IllegalArgumentException("월이 유효하지 않습니다.");
}
// 입력받은 일의 유효성을 체크합니다.
if (day < 1 || day > daysInMonth[month - 1]) {
throw new IllegalArgumentException("일이 유효하지 않습니다.");
}
// 전년도까지의 총 일수를 계산합니다.
int totalDays = (year - 1) * daysInYear;
// 해당 년도의 월별 일수를 더합니다.
for (int i = 0; i < month - 1; i++) {
totalDays += daysInMonth[i];
}
// 해당 월의 일수를 더합니다.
totalDays += day;
// 결과를 출력합니다.
System.out.println(year + "년 " + month + "월 " + day + "일은 총 " + totalDays + "일입니다.");
}
}
2년 6월 27일은 총 543일입니다.
10. 문자열 형식의 날짜를 `Date`로 변환하기
java.text.SimpleDateFormat을 사용하여 문자열 형식의 날짜를 `Date` 객체로 변환할 수 있습니다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDateString {
public static void main(String[] args) {
// 문자열 형식의 날짜를 정의합니다.
String dateString1 = "20230201"; // 년월일을 연속으로 쓴 경우
String dateString2 = "2023-02-01"; // 년-월-일 형식
// SimpleDateFormat를 사용하여 형식을 지정합니다.
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd"); // yyyyMMdd 형식
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd"); // yyyy-MM-dd 형식
try {
// 문자열을 Date로 변환합니다. 첫 번째 형식인 yyyyMMdd 사용
Date date1 = formatter1.parse(dateString1);
// 변환된 날짜를 출력합니다.
System.out.println("변환된 날짜1: " + formatter1.format(date1));
} catch (Exception e) {
// 변환 실패 시 예외 처리
System.out.println("잘못된 날짜 형식: " + dateString1);
}
try {
// 문자열을 Date로 변환합니다. 두 번째 형식인 yyyy-MM-dd 사용
Date date2 = formatter2.parse(dateString2);
// 변환된 날짜를 출력합니다.
System.out.println("변환된 날짜2: " + formatter2.format(date2));
} catch (Exception e) {
// 변환 실패 시 예외 처리
System.out.println("잘못된 날짜 형식: " + dateString2);
}
}
}
변환된 날짜1: 2023-02-01
변환된 날짜2: 2023-02-01
관련 글
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 이후 날짜 계산 총정리: 특정 날짜 차이 계산
여기까지 읽어주셔서 진심으로 감사드립니다.
이 글이 마음에 드셨다면, 우측 아래 하트(공감)를 눌러 응원의 표시를 부탁드려요.
여러분의 소중한 관심과 사랑이 큰 힘이 됩니다. 감사합니다!
'개발(Dev) > JAVA' 카테고리의 다른 글
[JAVA]자바 8 이후 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기 (0) | 2024.06.30 |
---|---|
[JAVA]자바 날짜 계산: 자바 8 이전과 이후의 모든 방법 (0) | 2024.06.28 |
[JAVA]자바 날짜 계산: 특정 날짜, 일수 더하기, 일수 빼기, 개월 차 구하기 완벽 정리 (0) | 2024.02.19 |
자바 API 문서 (0) | 2024.02.16 |
이클립스와 톰캣에서 POST 요청 데이터 길이 제한을 해결하는 방법 (0) | 2024.02.16 |