반응형
Calendar 클래스와 Date 클래스를 이용하여 날짜 및 시간 관련 기능을 수행하는 소스코드입니다. 현재 날짜를 가져와 만들고 특정 날짜도 출력하며 현재 날짜를 계산해서 더하기를 다양한 방법으로 하고 있습니다.
Calendar 객체를 사용시 매번 인스턴스화해야 하기 때문에 소스가 지저분해질 수 있어 공통으로 정의해 놓고 사용하시면 편리합니다.
1. 메서드
1) getYear, getMonth, getDay, getHour, getMinute, getSecond
-Date 객체로부터 년, 월, 일, 시, 분, 초를 추출합니다.
2) makeDate
-년, 월, 일, 시, 분, 초를 받아서 Date 객체를 생성합니다. Calendar 클래스를 사용하며, 월에 대해서는 0부터 시작하므로 1을 빼서 설정합니다.
3) addMonths, addDays, addHours, addMinutes, addSeconds
-Date에 월, 일, 시, 분, 초를 각각 더한 새로운 Date 객체를 반환합니다.
4) getDateStrByPattern
-Date 객체를 주어진 패턴에 맞추어 문자열로 변환하여 반환합니다.
2. 소스코드
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TEST {
public static void main(String[] args) throws Exception {
// 현재 날짜 가져오기
Date currentDate = new Date();
// 현재 날짜로부터 연, 월, 일, 시, 분, 초 추출
int year = getYear(currentDate);
int month = getMonth(currentDate);
int day = getDay(currentDate);
int hour = getHour(currentDate);
int minute = getMinute(currentDate);
int second = getSecond(currentDate);
// 현재 날짜 및 추출한 값 출력
System.out.println("Current Date: " + getDateStrByPattern(currentDate, "yyyy-MM-dd HH:mm:ss"));
System.out.println("Year: " + year);
System.out.println("Month: " + (month + 1)); // Month is zero-based in Calendar, so add 1
System.out.println("Day: " + day);
System.out.println("Hour: " + hour);
System.out.println("Minute: " + minute);
System.out.println("Second: " + second);
// 특정 날짜와 시간으로부터 Date 객체 생성 및 출력
Date customDate = makeDate(2023, 5, 15, 14, 30, 0);
System.out.println("Custom Date: " + getDateStrByPattern(customDate, "yyyy-MM-dd HH:mm:ss"));
// 현재 날짜에 3개월 더하기 및 출력
Date futureDate = addMonths(currentDate, 3);
System.out.println("Future Date (+3 months): " + getDateStrByPattern(futureDate, "yyyy-MM-dd HH:mm:ss"));
// 현재 날짜에 7일 더하기 및 출력
Date nextWeek = addDays(currentDate, 7);
System.out.println("Next Week (+7 days): " + getDateStrByPattern(nextWeek, "yyyy-MM-dd HH:mm:ss"));
// 현재 시간에 2시간 더하기 및 출력
Date laterTime = addHours(currentDate, 2);
System.out.println("Later Time (+2 hours): " + getDateStrByPattern(laterTime, "yyyy-MM-dd HH:mm:ss"));
}
/**
* getYear
* <pre>Date 에서 Year 값 추출</pre>
* @param date
* @return int
*/
public static int getYear(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.YEAR);
}
/**
* getMonth
* <pre>Date 에서 Month 값 추출</pre>
* @param date
* @return int
*/
public static int getMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.MONTH);
}
/**
* getDay
* <pre>Date 에서 day 값 추출</pre>
* @param date
* @return int
*/
public static int getDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_MONTH );
}
/**
* getHour
* <pre>Date 에서 Year 값 추출</pre>
* @param date
* @return int
*/
public static int getHour(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.HOUR_OF_DAY);
}
/**
* getMinute
* <pre>Date 에서 Month 값 추출</pre>
* @param date
* @return int
*/
public static int getMinute(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.MINUTE);
}
/**
* getSecond
* <pre>Date 에서 day 값 추출</pre>
* @param date
* @return int
*/
public static int getSecond(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.SECOND);
}
/**
* makeDate
* <pre>Date 생성 (int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)</pre>
* @param year
* @param month
* @param date
* @param hourOfDay
* @param minute
* @param second
* @return Date
*/
public static Date makeDate(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR , year);
cal.set(Calendar.MONTH, month - 1); // Subtract 1 to adjust for zero-based indexing
cal.set(Calendar.DAY_OF_MONTH , dayOfMonth);
cal.set(Calendar.HOUR_OF_DAY , hourOfDay);
cal.set(Calendar.MINUTE , minute);
cal.set(Calendar.SECOND , second);
return cal.getTime();
}
/**
* addMonths
* <pre>Date + months (월)</pre>
* @param date
* @param months
* @return Date
*/
public static Date addMonths(Date date, int months) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, months);
return cal.getTime();
}
/**
* addDays
* <pre>Date + days (일)</pre>
* @param date
* @param days
* @return Date
*/
public static Date addDays(Date date, int days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);
return cal.getTime();
}
/**
* addHours
* <pre>Date + hours (시)</pre>
* @param date
* @param hours
* @return Date
*/
public static Date addHours(Date date, int hours) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, hours);
return cal.getTime();
}
/**
* addMinutes
* <pre>Date + mins (분)</pre>
* @param date
* @param mins
* @return Date
*/
public static Date addMinutes(Date date, int mins) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, mins);
return cal.getTime();
}
/**
* addSeconds
* <pre>Date + secs (초)</pre>
* @param date
* @param secs
* @return Date
*/
public static Date addSeconds(Date date, int secs) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, secs);
return cal.getTime();
}
/**
* addSeconds
* <pre>Date -> String </pre>
* @param date
* @param pattern
* @return String
*/
public static String getDateStrByPattern(Date date, String pattern) {
DateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}
}
반응형
'개발이야기 > Java' 카테고리의 다른 글
[Java] ArrayList 사용방법(생성, 예제, 메서드) (0) | 2024.02.16 |
---|---|
[Java] LocalDateTime을 활용해서 날짜와 시간 처리하기 (0) | 2024.02.13 |
[Java] JSONObject 클래스 사용해서 Map을 JSON으로 변환하기 (0) | 2024.01.29 |
[Java] Gson 사용해서 Json String DTO 변환하기 (2) | 2024.01.29 |
[Java] ObjectUtils 클래스 메서드 사용법, 예제 (isEmpty, nullSafeEquals, isArray) (0) | 2024.01.18 |
댓글