date관련 작업을 할때 유틸 처럼 사용할 클래스를 만들면서 기본 java api이외에 사용할 패키지를 검색 하다
joda-time을 발견하고 오래전 부터 많은 사람들이 사용하던 패키지 라는걸 알고는 관련 함수를 해당 패키지를
이용해서 작업해 보았다
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class DateUtil {
private DateTime dateTime;
public DateUtil(){}
public DateUtil(Date date){
dateTime = new DateTime(date);
}
public void defaultDateSetting(Date date){
dateTime = new DateTime(date);
}
public int getYear(){
return dateTime.getYear();
}
public int getMonth(){
return dateTime.getMonthOfYear();
}
public int getDay(){
return dateTime.getDayOfMonth();
}
public int getHour(){
return dateTime.getHourOfDay();
}
public int getMinute(){
return dateTime.getMinuteOfHour();
}
public String getYearToString(){
int curYear = dateTime.getYear();
return String.valueOf(curYear);
}
/**
* 10이하의 값은 앞에 0을 붙이게 됩니다.
* */
public String getMonthToString(){
int curMonth = dateTime.getMonthOfYear();
if(curMonth<10){
return "0"+curMonth;
}else{
return String.valueOf(curMonth);
}
}
public String getMonthToStringDefault(){
int curMonth = dateTime.getMonthOfYear();
return String.valueOf(curMonth);
}
/**
* 10이하의 값은 앞에 0을 붙이게 됩니다.
* */
public String getDayToString(){
int curDay = dateTime.getDayOfMonth();
if(curDay<10){
return "0"+curDay;
}else{
return String.valueOf(curDay);
}
}
public String getDayToStringDefault(){
int curDay = dateTime.getDayOfMonth();
return String.valueOf(curDay);
}
public String getSimpleDateFormat(String dateFormat){
DateTimeFormatter dateTimeFormat = DateTimeFormat.forPattern(dateFormat);
return dateTime.toString(dateTimeFormat);
}
public String getSimpleDateFormat(Date date, String dateFormat){
DateTimeFormatter dateTimeFormat = DateTimeFormat.forPattern(dateFormat);
return new DateTime(date).toString(dateTimeFormat);
}
/**
* 전달 받은 Date의 year,month,day에 해당하는 margin만큰 지난 날짜를 반환하는
* 메소드
* */
public Date dayCalForStr(Date date, int margin, String mode){
DateTime calDateTime = new DateTime(date);
if(mode.endsWith("year")){
calDateTime.plusYears(margin);
}else if(mode.endsWith("month")){
calDateTime.plusMonths(margin);
}else{
calDateTime.plusDays(margin);
}
return calDateTime.toDate();
}
/**
* 생성시 설정된 date의 year,month,day에 해당하는 margin만큰 지난 날짜를 반환하는
* 메소드
* */
public Date dayCalForStr(int margin, String mode){
if(mode.endsWith("year")){
dateTime.plusYears(margin);
}else if(mode.endsWith("month")){
dateTime.plusMonths(margin);
}else{
dateTime.plusDays(margin);
}
return dateTime.toDate();
}
/**
* 전달 받은 날짜(targetDate-yyyy-mm-dd)가 현재 날짜 기준으로 checkNum(날짜) 기준안의 글인지 체크 하는 메소드
* checkNum 날짜 보다 더 전의 글은 false 안의 글이면 true
* */
public boolean marginCheck(String dateStr, int checkNum){
DateTime checkDateTime = new DateTime(dateStr);
Days checkDays = Days.daysBetween(dateTime, checkDateTime);
int checkCnt = checkDays.getDays();
if(checkCnt>checkNum){
return false;
}else{
return true;
}
}
/**
* 전달 받은 날짜(targetDate-yyyy-mm-dd)가 (checkDate-yyyy-mm-dd)기준으로 checkNum(날짜) 기준안의 날짜인지 체크 하는 메소드
* checkNum 날짜 보다 더 전의 날짜는 true 안의 날짜면 false
* */
public boolean marginCheck(String checkDate, String targetDate, int checkNum){
DateTime checkDateTime = new DateTime(checkDate);
DateTime targetDateTime = new DateTime(targetDate);
Days checkDays = Days.daysBetween(targetDateTime, checkDateTime);
int checkCnt = checkDays.getDays();
if(checkCnt>checkNum){
return false;
}else{
return true;
}
}
/**
* 전달 받은 날짜(targetDate yyyy-mm-dd, hour, minute)가 현재 날짜 기준으로 이전인지 이후 인지 체크하는 메소드
* 현재 날짜 보다 이전일 경우 false 이후 이면 true
* */
public boolean atferDateCheck(String targetDate, String hour, String minute){
String[] tDate = targetDate.split("-");
if("".equals(hour)){hour = "0";}
if("".equals(minute)){minute = "0";}
DateTime targetDateTime = new DateTime(Integer.parseInt(tDate[0]), Integer.parseInt(tDate[1]), Integer.parseInt(tDate[2]), Integer.parseInt(hour), Integer.parseInt(minute));
if(dateTime.isAfter(targetDateTime)){
return true;
}else{
return false;
}
}
/**
* 시작 날짜(startDate yyyy-mm-dd, hour, minute)와
* 종료 날짜(endDate yyyy-mm-dd, hour, minute) 기준으로
* 오늘 날짜가 속해 있을경우 true
* 오늘 날짜가 속해 있지 않을 경우 false
* */
public boolean innerDateCheck(String startDate, String startHour, String startMinute, String endDate, String endHour, String endMinute){
String[] sDate = startDate.split("-");
String[] eDate = endDate.split("-");
if("".equals(startHour)){startHour = "00";}
if("".equals(startMinute)){startMinute = "00";}
if("".equals(endHour)){endHour = "00";}
if("".equals(endMinute)){endMinute = "00";}
DateTime startDateTime = new DateTime(Integer.parseInt(sDate[0]), Integer.parseInt(sDate[1]), Integer.parseInt(sDate[2]), Integer.parseInt(startHour), Integer.parseInt(startMinute));
DateTime endDateTime = new DateTime(Integer.parseInt(eDate[0]), Integer.parseInt(eDate[1]), Integer.parseInt(eDate[2]), Integer.parseInt(endHour), Integer.parseInt(endMinute));
if(dateTime.isAfter(startDateTime) && dateTime.isBefore(endDateTime)){
return true;
}else{
return false;
}
}
/**
* 넘겨준 year,month,day,time,minute값으로 디비에 저장할 Date함수를 넘겨주는 메소드
* @param int year 년도
* @param int month 월
* @param int day 일
* @param int time 시간
* @param int minute 분
* @return Date
* */
public Date dateInString(int year, int month, int day, int time, int minute){
DateTime createDateTime = new DateTime(year, month, day, time, minute);
return createDateTime.toDate();
}
/**
* dateStr 을 format형식으로 받아서 Date로 반환하는 메소드
* DateTimeFormatter 에 맞는 포멧을 넘겨 주면 자동 변환
* */
public Date dateInSimpleDateFormat(String dateStr, String format){
DateTime createDateTime = new DateTime(dateStr);
return createDateTime.toDate();
}
}
반응형
'JAVA' 카테고리의 다른 글
POI/jfreeChart 이용한 엑셀파일 만들기 (0) | 2015.08.26 |
---|---|
common-io 를 사용한 파일관련 class (0) | 2015.08.04 |
class 컴파일 버전 확인 (0) | 2015.07.30 |
cookie관련 기본 자바 소스 (0) | 2015.07.24 |
excel파일 생성하는 메소드 (0) | 2015.07.24 |