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
Posted by 질주하는구
,