[JAVA] 날짜 관련 함수 총 정리
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
public class DateUtilsEx {
public static Date getDate(int year, int month, boolean truncate) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
if( truncate ) {
cal = DateUtils.truncate(cal, Calendar.MONTH);
}
return cal.getTime();
}
public static Date getDate(int year, int month) {
return getDate(year, month, false);
}
/**
* 1년 후의 날을 구한다.
*/
public static Date getNextYear(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 1);
return cal.getTime();
}
/**
* 1년 전의 날을 구한다.
*/
public static Date getPreviousYear(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, -1);
return cal.getTime();
}
/**
* 한달 후의 날을 구한다.
*/
public static Date getNextMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
return cal.getTime();
}
/**
* 한달 전의 날을 구한다.
*/
public static Date getPreviousMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -1);
return cal.getTime();
}
/**
* 7일 후의 날을 구한다.
*/
public static Date getNextWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 7);
return cal.getTime();
}
/**
* 7일전의 날을 구한다.
*/
public static Date getPreviousWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, -7);
return cal.getTime();
}
/**
* 다음 날을 구한다.
*/
public static Date getNextDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
/**
* 하루 전 날을 구한다.
*/
public static Date getPreviousDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, -1);
return cal.getTime();
}
/**
* 해당 주의 첫번째 날을 구한다.
*/
public static Date getFirstDateOfWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, (dayOfWeek-1)*-1);
return cal.getTime();
}
/**
* 해당 주의 마지막 날을 구한다.
*/
public static Date getLastDateOfWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, 7-dayOfWeek);
return cal.getTime();
}
/**
* 해당 연도 달의 첫번째 날을 구한다.
*/
public static Date getFirstDateOfMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
/**
* 해당 연도 달의 첫번째 날을 구한다.
*/
public static Date getFirstDateOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return minimized(cal.getTime());
}
/**
* 해당 연도 달의 마지막 날을 구한다.
*/
public static Date getLastDateOfMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMaximum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
/**
* 해당 연도 달의 마지막 날을 구한다.
*/
public static Date getLastDateOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
return maximize(cal.getTime());
}
/**
* 시,분,초를 모두 최소치로 초기화한다.
*/
public static Date minimized(Date date) {
return DateUtils.truncate(date, Calendar.DATE);
}
/**
* 시,분,초를 모두 최대치로 초기화한다.
*/
public static Date maximize(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
}
출처: http://lyb1495.tistory.com/95 [helloworld]
'Program Language > ☕ JAVA' 카테고리의 다른 글
[코딩 테스트] 01. java Scanner 클래스를 사용해서 A와 B를 더하는 프로그램을 만들어보자! (0) | 2018.10.11 |
---|---|
[자바/웹개발자] 면접 대비 - 2편 (0) | 2018.09.19 |
[java] 값의 끝 2자리 마스킹 (*표시) (0) | 2017.12.20 |
[Java] Map의 Key값을 이용하여 Value값 가져오기 (0) | 2017.08.25 |
[자바] 벡터 연습, 명품 자바 에센셜 실습문제 7장 4번 (0) | 2016.11.06 |
소중한 공감 감사합니다