본문 바로가기

개발/BACK

[JAVA] 두 날짜 차이 계산 로직 및 년,월,일 계산로직

728x90

코딩을 할 때, 날짜를 계산해서 처리할 때가 종종 있다

자주 사용될 로직이라면

공통 메소드로 생성해서 사용하자

 


두 날짜 차이 계산

 

Date Class 를 이용하여 구현하기

 

SimpleDateFormat 클래스를 이용하여 String 문자를 Date 객체로 변환

밀리세컨드 단위로 시간을 나타내는 getTime 메소드로 시간을 변환한다.

 

ms/1000 : 초

ms/(60*1000) : 분

ms/(60*60*1000) : 시

ms/(24*60*60*1000) : 일

 

        String a_date = "2022-03-19";
        String b_date = "2022-02-10";
        
        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
        
        Date a_parseDate = format.parse(a_date);
        Date b_parseDate = format.parse(b_date);
        
        // 밀리세컨드 단위로 차이 결과 도출
        long resultTime = a_parseDate.getTime() - b_parseDate.getTime();
        
        System.out.println("초 : "+resultTime / 1000);
        System.out.println("분 : "+resultTime / (60*1000));
        System.out.println("시 : "+resultTime / (60*60*1000));
        System.out.println("일 : "+resultTime / (24*60*60*1000));
cs

 


특정 날짜에 년,월,일,시,분,초 더하기

 

Calendar 클래스를 통해 내장 함수를 이용해 각 시간을 더할 수 있다

Calendar 클래스의 동일 메소드에 음수를 넣으면 년도에서 해당날짜를 뺄셈하게 된다

        String a_date = "2022-01-01 09:00:00";
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        
        Date a_parseDate = sdf.parse(a_date);
        
        
        Calendar cal =Calendar.getInstance();
        
        cal.setTime(a_parseDate);
        
        
        cal.add(Calendar.DATE, 1);
        System.out.println("일 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.MONTH, 1);
        System.out.println("월 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.YEAR, 1);
        System.out.println("년 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.HOUR_OF_DAY , 1);
        System.out.println("시 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.MINUTE, 10);
        System.out.println("분 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.SECOND, 10);
        System.out.println("초 덧셈: "+sdf.format(cal.getTime()));
                
        
        일 덧셈: 2022-01-02 09:00:00
        월 덧셈: 2022-02-02 09:00:00
        년 덧셈: 2023-02-02 09:00:00
        시 덧셈: 2023-02-02 10:00:00
        분 덧셈: 2023-02-02 10:10:00
        초 덧셈: 2023-02-02 10:10:10
cs

 


현재 시간 기준으로 년,월,일,시,분,초 더하기

 

DATE 객체를 생성하면 현재 시간을 구할 수 있다

해당 객체를 위와 동일하게 처리하면 된다
Calendar 클래스의 동일 메소드에 음수를 넣으면 년도에서 해당날짜를 뺄셈하게 된다

 

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        
        Date today = new Date();
        
        
        Calendar cal =Calendar.getInstance();
        
        cal.setTime(today);
        
        
        cal.add(Calendar.DATE, 1);
        System.out.println("일 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.MONTH, 1);
        System.out.println("월 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.YEAR, 1);
        System.out.println("년 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.HOUR_OF_DAY , 1);
        System.out.println("시 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.MINUTE, 10);
        System.out.println("분 덧셈: "+sdf.format(cal.getTime()));
        cal.add(Calendar.SECOND, 10);
        System.out.println("초 덧셈: "+sdf.format(cal.getTime()));
 
 
 
        일 덧셈: 2022-03-20 01:03:43
        월 덧셈: 2022-04-20 01:03:43
        년 덧셈: 2023-04-20 01:03:43
        시 덧셈: 2023-04-20 02:03:43
        분 덧셈: 2023-04-20 02:13:43
        초 덧셈: 2023-04-20 02:13:53
 
cs
728x90