ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [java]날짜 더하기, 빼기 , 구하기
    Java/Basic 2019. 1. 28. 17:03
    반응형

    2012년 개발을 시작하고 맨날 동일하게 사용하는것들이 있다 ! 

    날짜 더하고 빼고 계산하고 ... Date... calendar... java에서 제공하는 극악무도함(?) 에 치를 떨며 유틸화 시켜서 사용했던거 같다.. java 1.6 버전 에서 말이다 ... 


    2019년 문득 내가 몇년동안 사용하고있는 이런 모듈들이 지금 제대로 되있는건가 ? 내가 생각하는것보다 더 좋은 방법들이 있지 않을까 ? 라는 생각과 함께 ... 찬찬히 보다보니 java 1.8 에서 ZoneDateTime, LocalDateTime 등... Joda-time 과 비슷한... 녀석이 생긴걸 확인했다... 

    와... 지금 java 11 이 나온마당에 난 그동안 고전 유물을 사용중이였던것...!!  변화가 시른 꼰대가 되긴 싫다 ! 


    Zonedate , LocalTIme  모두 java.time.* 안에 모두 포함되있다 . 


    간단하게 날짜가 같은지 비교 하기도 편하고 예전보다 좀더 명확하게 사용가능한 메서드들을 제공하고있다 . ( 자세한건 Java API Docs에 잘나와있음 


    기본적으로 이녀석들은  ISO-8601 을 기반으로 하기 때문에 생각보다 표준화되있다고 보인다 . 

    특히 ZoneDate  경우는 타임존 정보도 가지고 이용가능하기 때문에 지역간 시차 계산같경우 응용하기 좋을거 같다. 특히 흥미로웠던건 Summer Time 에 대한 지원도 하고있다는거다 ... 예전엔 Joda-time 라이브러리나 기타 날짜관련 라이브러리 같은걸 써야만 뭔 다채로운 기능들을 쓸수 있었는데 jdk 만 있으면 된다는게 맘에든다. 


    ( https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html)


    바꾸자 ! 처음부터 귀찮더라도 만들자 !! 




    package utils;

    import javax.swing.text.DateFormatter;
    import java.time.DayOfWeek;
    import java.time.Duration;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    import java.time.ZonedDateTime;
    import java.time.chrono.IsoChronology;
    import java.time.format.DateTimeFormatter;
    import java.time.format.TextStyle;
    import java.time.zone.ZoneRules;
    import java.util.Locale;


    /**
    * 날짜 연산 유틸리티
    */
    public class DateUtils {


    /**
    * 전달받은 값을 바탕으로 ZondeDatTime 값을 생성 하여 반환 ( 단순 날짜값만 계산시 사용 )
    * @param originalDate
    * @param originalTime
    * @param strZoneId
    * @return
    */
    private ZonedDateTime getZoneData( String originalDate, String originalTime , String strZoneId ) {
    String[] strDate= originalDate.split("-");
    int year = Integer.parseInt( strDate[0] );
    int month = Integer.parseInt( strDate[1] );
    int day = Integer.parseInt( strDate[2] );
    String[] strTime = originalTime.split(":");
    int hour = Integer.parseInt( strTime[0] );
    int minute = Integer.parseInt( strTime[1] );
    int second = Integer.parseInt( strTime[2] );
    int nano = 0 ;

    ZoneId zoneIdData = ZoneId.of(strZoneId);


    return ZonedDateTime.of( year, month, day , hour, minute, second, nano, zoneIdData);
    }


    /**
    * 전달받은 값을 바탕으로 LocalData 값을 생성하여 변환 ( 시간 계산시 사용 )
    * @param originalDate
    * @param spritStr
    * @return
    */
    private LocalDate getLocalDate(String originalDate, String spritStr) {
    String[] strDate= originalDate.split(spritStr);
    int year = Integer.parseInt( strDate[0] );
    int month = Integer.parseInt( strDate[1] );
    int day = Integer.parseInt( strDate[2] );

    return IsoChronology.INSTANCE.date(year, month, day );
    }

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
    * 몇달 이후 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String afterMonth( String originalDate , String originalTime , long afterMonth, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;

    LocalDate next = theDay.plusMonths(afterMonth);


    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;

    }


    /**
    * 몇달 이후 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String afterMonth( String originalDate , long afterMonth ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null ;
    if ( data.length == 2 ) orgTime = data[1] ;
    return afterMonth(originalDate, orgTime ,afterMonth , "-") ;

    }


    /**
    * 몇주 이후 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String afterWeeks( String originalDate, String originalTime , long afterWeek, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;

    LocalDate next = theDay.plusWeeks(afterWeek);
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;

    }


    /**
    * 몇주 이후 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String afterWeeks( String originalDate , long afterWeek ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null ;
    if ( data.length == 2 ) orgTime = data[1] ;
    return afterWeeks(originalDate, orgTime ,afterWeek , "-") ;

    }




    /**
    * 몇일 이후 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String afterDays( String originalDate, String originalTime ,long afterDays, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;
    LocalDate next = theDay.plusDays(afterDays);
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");


    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;

    }

    /**
    * 몇일 이후 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String afterDays( String originalDate , long afterDays ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null;
    if ( data.length == 2 ) orgTime = data[1] ;
    return afterDays(orgDate, orgTime ,afterDays , "-") ;

    }

    /**
    * 지정한 시간 이후 몇시간 이후 값 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String afterHour(String strZoneId, String originalDate, String originalTime , long afterHours ){
    String[] strDate= originalDate.split("-");
    String strFormater = "yyyy-MM-dd HH::mm:ss";
    ZoneId zoneIdData = ZoneId.of(strZoneId);
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime after = thisTime.plusHours(afterHours);
    return after.format(format);
    }
    /**
    * 지정한 시간 이후 몇시간 이후 값 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String afterHour(String strZoneId, String originalFullDate ,long afterHours ){
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return afterHour(strZoneId, originalDate ,originalTime, afterHours );
    }

    /**
    * 지정한 시간 이후 몇시간 이후 값 반환 ( 국가 기본값 : 서울)
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String afterHour( String originalFullDate ,long afterHours ){
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "Asia/Seoul";
    return afterHour(strZoneId, originalDate ,originalTime, afterHours );
    }



    /**
    * 국가 시간 기준 몇분후 시간 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String afterMinute(String strZoneId, String originalDate, String originalTime , long afterMinute){
    String strFormater = "yyyy-MM-dd HH::mm:ss";
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime after = thisTime.plusMinutes(afterMinute);
    return after.format(format);
    }

    /**
    * 국가 시간 기준 몇분후 시간 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String afterMinute( String strZoneId , String originalFullDate, long afterMinute) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return afterMinute( strZoneId, originalDate,originalTime,afterMinute);
    }
    /**
    * 국가 시간 기준 몇분후 시간 반환( 한국 서울 기준 )
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String afterMinute( String originalFullDate, long afterMinute) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "Asia/Seoul";
    return afterMinute( strZoneId, originalDate,originalTime,afterMinute);
    }
    /**
    * 표준시간 기준 몇초후 시간 반환
    * strZoneId : ex) "UTC"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String afterSecond(String strZoneId, String originalDate, String originalTime , long afterSecond){

    String strFormater = "yyyy-MM-dd HH::mm:ss";
    ZoneId zoneIdData = ZoneId.of(strZoneId);
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime after = thisTime.plusSeconds(afterSecond);
    return after.format(format);
    }

    /**
    * 표준시간 기준 몇초후 시간 반환
    * strZoneId : ex) "UTC"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String afterSecond(String strZoneId, String originalFullDate, long afterSecond) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return afterSecond(strZoneId, originalDate, originalTime, afterSecond);
    }

    /**
    * 표준시간 기준 몇초후 시간 반환 ( UTC 기준 )
    * strZoneId : ex) "UTC"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String afterSecond( String originalFullDate, long afterSecond) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "UTC";
    return afterSecond(strZoneId, originalDate, originalTime, afterSecond);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
    * 몇달 이전 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String beforeMonth( String originalDate , String originalTime , long afterMonth, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;

    LocalDate next = theDay.minusMonths(afterMonth);


    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;

    }


    /**
    * 몇달 이전 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String beforeMonth( String originalDate , long afterMonth ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null ;
    if ( data.length == 2 ) orgTime = data[1] ;
    return beforeMonth(originalDate, orgTime ,afterMonth , "-") ;

    }

    /**
    * 몇주 이전 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String beforeWeeks( String originalDate, String originalTime , long afterWeek, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;

    LocalDate next = theDay.minusWeeks(afterWeek);
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;

    }


    /**
    * 몇주 이전 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String beforeWeeks( String originalDate , long afterWeek ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null ;
    if ( data.length == 2 ) orgTime = data[1] ;
    return beforeWeeks(originalDate, orgTime ,afterWeek , "-") ;

    }
    /**
    * 몇일 이전 구하기 ( 정해진 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @param spritStr
    * @return String
    */
    public String beforeDays( String originalDate ,String originalTime, long afterDays, String spritStr ){

    LocalDate theDay = getLocalDate(originalDate, spritStr) ;

    LocalDate next = theDay.minusDays(afterDays);

    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    if( originalTime == null ) return next.toString();
    else return next.toString()+" "+originalTime;
    }

    /**
    * 몇일 이전 구하기 ( "-" 구분기호로 년월일 구분)
    * @param originalDate
    * @param afterDays
    * @return String
    */
    public String beforeDays( String originalDate , long afterDays ){
    String[] data = originalDate.split(" ");
    String orgDate = data[0];
    String orgTime = null;
    if ( data.length == 2 ) orgTime = data[1] ;
    return beforeDays(orgDate, orgTime , afterDays , "-") ;

    }

    /**
    * 지정한 시간 이전 몇시간 값 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String beforeHour(String strZoneId, String originalDate, String originalTime , long beforeHours ){
    String[] strDate= originalDate.split("-");
    String strFormater = "yyyy-MM-dd HH::mm:ss";
    ZoneId zoneIdData = ZoneId.of(strZoneId);
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime before = thisTime.minusHours(beforeHours);

    return before.format(format);
    }
    /**
    * 지정한 시간 이전 몇시간 값 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String beforeHour(String strZoneId, String originalFullDate ,long afterHours ){
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return beforeHour(strZoneId, originalDate ,originalTime, afterHours );
    }

    /**
    * 지정한 시간 이전 몇시간 값 반환 ( 국가 기본값 : 서울)
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterHours
    * @return String
    */
    public String beforeHour( String originalFullDate ,long afterHours ){
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "Asia/Seoul";
    return beforeHour(strZoneId, originalDate ,originalTime, afterHours );
    }



    /**
    * 국가 시간 기준 몇분이전 시간 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String beforeMinute(String strZoneId, String originalDate, String originalTime , long afterMinute){
    String strFormater = "yyyy-MM-dd HH::mm:ss";
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime before = thisTime.minusMinutes(afterMinute);
    return before.format(format);
    }

    /**
    * 국가 시간 기준 몇분이전 시간 반환
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String beforeMinute( String strZoneId , String originalFullDate, long afterMinute) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return beforeMinute( strZoneId, originalDate,originalTime,afterMinute);
    }
    /**
    * 국가 시간 기준 몇분이전 시간 반환( 한국 서울 기준 )
    * strZoneId : ex) "Asia/Seoul"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return String
    */
    public String beforeMinute( String originalFullDate, long afterMinute) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "Asia/Seoul";
    return beforeMinute( strZoneId, originalDate,originalTime,afterMinute);
    }
    /**
    * 표준시간 기준 몇초이전 시간 반환
    * * strZoneId : ex) "UTC"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String beforeSecond(String strZoneId, String originalDate, String originalTime , long afterSecond){


    String strFormater = "yyyy-MM-dd HH::mm:ss";
    ZoneId zoneIdData = ZoneId.of(strZoneId);
    DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
    ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
    ZonedDateTime before = thisTime.minusSeconds(afterSecond);
    return before.format(format);
    }

    /**
    * 표준시간 기준 몇초이전 시간 반환
    * strZoneId : ex) "UTC"
    * @param strZoneId
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String beforeSecond(String strZoneId, String originalFullDate, long afterSecond) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    return beforeSecond(strZoneId, originalDate, originalTime, afterSecond);
    }

    /**
    * 표준시간 기준 몇초 이전 시간 반환 ( UTC 기준 )
    * @param originalDate
    * @param originalTime
    * @param afterMinute
    * @return
    */
    public String beforeSecond( String originalFullDate, long afterSecond) {
    String[] data = originalFullDate.split(" ");
    String originalDate = data[0];
    String originalTime = data[1];
    String strZoneId = "UTC";
    return beforeSecond(strZoneId, originalDate, originalTime, afterSecond);
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
    * 지정한 날짜의 요일 정보
    * type : shor, full , narrow
    * locale : ex ) Locale.KOREA
    * @param originalDate
    * @param type
    * @param locale
    * @return String
    */
    public String getDayOfWeek(String originalDate , String type , Locale locale ){

    String[] strDate= originalDate.split("-");
    int year = Integer.parseInt( strDate[0] );
    int month = Integer.parseInt( strDate[1] );
    int day = Integer.parseInt( strDate[2] );
    LocalDate thisDays = LocalDate.of(year, month, day);

    DayOfWeek dayOfWeek = thisDays.getDayOfWeek();
    TextStyle strType ;

    switch ( type ) {
    case "full" : strType = TextStyle.FULL;
    break;
    case "narrow" : strType = TextStyle.NARROW ;
    break;
    default: strType = TextStyle.SHORT ;
    break;
    }
    return dayOfWeek.getDisplayName(strType, locale );


    }

    /**
    * 두 날짜사이 기간 반환
    * @param startDate
    * @param endDate
    * @return
    */
    public int getBetWeenDate(String startDate , String endDate ){
    LocalDate stDay = getLocalDate(startDate, "-");
    LocalDate edDay = getLocalDate(endDate , "-");

    return edDay.compareTo(stDay);

    }



    /**
    * 두 날짜사이 기간 시간 반환
    * @param startDate
    * @param endDate
    * @return
    */
    public long getBetWeenTime(String startDate , String endDate ,String getTimeType ){
    String[] strStart = startDate.split(" ");
    String[] endStart = endDate.split(" ");

    ZonedDateTime stDay = getZoneData(strStart[0], strStart[1], "Asia/Seoul");
    ZonedDateTime edDay = getZoneData(endStart[0] , endStart[1] , "Asia/Seoul");

    Duration d = Duration.between( stDay , edDay );

    long toTime= 0 ;
    if(getTimeType.equals("min")) {

    return d.toMinutes();
    }
    else if(getTimeType.equals("hour")) {
    return d.toHours();

    }else if(getTimeType.equals("sec")) {
    return d.toMillis()/1000;
    }else {
    return d.toMinutes();
    }

    }

    /**
    * 현재 시간 가져오기
    * @return
    */
    public String getNow(){
    LocalDateTime curDate = LocalDateTime.now();
    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    return curDate.format(df).toString();
    }
    }

    결론부터 말하면 대충 만들었다 이곳저곳 사용하는곳을 찾아서 그냥 내 입맛대로 만들었다 ....  분명 또 쓸거 같다 ... 웹프로그래밍을 하는한 날짜랑은 평생(?) 갈거 같다 . 일단 이곳에 남겨두고 나중에 혹여나 필요한데 찾기 힘들땐 복사해서 써야겠다 . 


    만들면서 느낀거지만 참 별것도 아닌데 만들기 귀찮다... 



    /**
    * DBUtils Class Example
    */
    public static void test_DateUtils(){
    DateUtils du = new DateUtils();
    System.out.println("====================================================================================================");
    System.out.println(du.getNow() );
    System.out.println("====================================================================================================");
    System.out.println(du.getDayOfWeek("2018-01-01", "short", Locale.KOREA ) );
    System.out.println(du.getBetWeenDate("2018-01-01","2018-01-03") );
    System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "hour") );
    System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "min") );
    System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "sec") );
    System.out.println("====================================================================================================");
    System.out.println(du.afterDays("2018-01-01",5 ));
    System.out.println(du.afterWeeks("2018-01-01",1 ));
    System.out.println(du.afterMonth("2018-01-31",1 ));
    System.out.println("====================================================================================================");
    System.out.println(du.afterMinute("2018-01-01 22:22:22",5 ));
    System.out.println(du.afterHour("2018-01-01 22:22:22",5 ));
    System.out.println(du.afterSecond("2018-01-01 22:22:22",5 ));
    System.out.println("====================================================================================================");

    System.out.println(du.beforeMonth("2018-01-01",1 ));

    System.out.println(du.beforeWeeks("2018-01-01",1 ));
    System.out.println(du.beforeDays("2018-01-01",3 ));

    System.out.println(du.beforeHour("2018-01-01 22:22:22",5 ));
    System.out.println(du.beforeMinute("2018-01-01 22:22:22",5 ));
    System.out.println(du.beforeSecond("2018-01-01 22:22:22",5 ));
    System.out.println("====================================================================================================");


    }

    무시하게 실행 해보자 !! 


    결론은... ? 



    잘되네 .... 


    어느순간부터 자바에서 날짜처리하는게 어렵다고 느껴지다보니 라이브러리 쓰기도 귀찮고 해서 Javascript 에서 처리를 더 많이 해서 

    처리 했던거 같다. 뭐.. 물론 javascript 도 그닥 쉽다고 생각은 안든다 그래도 data, calendar보단 낫다고 생각했을뿐... 


    서버에서 날짜처리가 필요하다면 만들어놓은걸 써봐야겠다. 


    대충 만큼 써보면 뭔가 문제가 더보이지 않을까 싶다. 


    이왕 시간한거 다른걸 뭘 만들어 봐야 할지 이참에 쭈욱~~ 봐야겠다.



    반응형

    'Java > Basic' 카테고리의 다른 글

    Logback 시간과 system 시간이 다를때...  (0) 2019.06.25
    JVM( GC) 이해하기  (0) 2019.04.26
    BigDecimal (feat. 소수점 계산)  (1) 2019.03.26
    [java] Http get,post 통신  (0) 2019.01.28
Designed by Tistory.