자바 한달 후 날짜 - jaba handal hu naljja

  java.text.SimpleDateFormat,
   java.util.Calendar,
   java.util.Date"  

//현재날짜
   java.util.Date d = new java.util.Date();
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String date = df.format(d);
   //한달후 날짜
   Calendar cal = Calendar.getInstance();
   cal.add(Calendar.MONTH, +1);
   Date currentTime=cal.getTime();
   SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd");
   String release_Dt_start=formatter.format(currentTime);

Date에 날짜를 더하는 다양한 방법에 대해서 알아보겠습니다. Date는 1970년을 기반으로 측정된 시간이기 때문에 Calendar를 이용하여 날짜 연산을 하였습니다.

현재 시간에 날짜 더하고 빼기

현재 시간을 갖고 있는 Date객체에 월, 일을 추가하는 코드입니다. 현재 Date를 Calendar에 설정하고 add()로 날짜 연산을 하였습니다. 날짜를 빼려면 음수를 넣으면 됩니다.

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Example {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("current: " + df.format(cal.getTime()));

        cal.add(Calendar.MONTH, 2);
        cal.add(Calendar.DATE, -3);
        System.out.println("after: " + df.format(cal.getTime()));
    }
}

결과

current: 2019-03-23
after: 2019-05-20

특정 날짜에 더하고 빼기

위와 동일하지만 특정 날짜의 Date를 생성하는 것이 다릅니다. 이번에는 날짜 및 시간 연산도 하였습니다.

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Example {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        Date date = null;
        try {
            date = df.parse("2019-07-04T12:30:30+0530");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        cal.setTime(date);
        System.out.println("current: " + df.format(cal.getTime()));

        cal.add(Calendar.YEAR, 1);
        cal.add(Calendar.MONTH, 2);
        cal.add(Calendar.DATE, 3);
        cal.add(Calendar.HOUR_OF_DAY , 1);
        cal.add(Calendar.MINUTE, 20);
        cal.add(Calendar.SECOND, 10);
        System.out.println("after: " + df.format(cal.getTime()));
    }
}

결과

current: 2019-07-04T16:00:30+0900
after: 2020-09-07T17:20:40+0900

날짜 두개 더하기

두개의 Date를 더하려면 두개의 Calendar를 사용해야 합니다. Calendar.get으로 날짜를 가져올 수 있습니다. 위의 코드를 응용하여 아래와 같이 구현하면 됩니다. MONTH는 0이 1월을 의미하기 때문에(zero based) 연산을 할 때 1을 더해줘야 합니다.

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Example {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            cal.setTime(df.parse("2019-07-04"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(new Date());
        System.out.println("cal: " + df.format(cal.getTime()));
        System.out.println("cal2: " + df.format(cal2.getTime()));

        cal.add(Calendar.YEAR, cal2.get(Calendar.YEAR));
        cal.add(Calendar.MONTH, cal2.get(Calendar.MONTH) + 1); // Zero-based months
        cal.add(Calendar.DATE, cal2.get(Calendar.DATE));
        System.out.println("after cal: " + df.format(cal.getTime()));
        System.out.println("after cal2: " + df.format(cal2.getTime()));
    }
}

결과

cal: 2019-07-04
cal2: 2019-03-23
after cal: 4038-10-27
after cal2: 2019-03-23

정리

Calendar를 이용하여 Date에 날짜 연산을 하는 방법에 대해서 알아보았습니다.

  • Java - ArrayList에서 랜덤으로 요소 가져오기
  • Java - ArrayList 깊은 복사(deep copy)
  • Java - 리스트 안에 리스트 추가 (2차원 리스트)
  • Java - 2차원 리스트 평탄화 (flatten)
  • Java - 두개 리스트의 차집합, 서로 없는 요소 찾기
  • Java - 두개 리스트의 교집합, 공통 요소 찾기
  • Java - String 배열을 int 배열로 변환
  • Java - 문자열에서 콤마(,) 제거하기
  • Java - 문자열에 특정 문자열이 포함되어있는지 확인
  • Java - int 배열을 String 배열로 변환
  • Java - String 리스트에서 null, 빈 문자열 제거
  • Java - 리스트를 두개의 리스트로 나누기
  • Java - ArrayList의 요소 위치 바꾸기(Swap)
  • Java - 콤마(,)로 구분된 문자열을 리스트로 변환
  • Java - List가 다른 List의 모든 요소를 포함하는지 확인
  • Java - ArrayList 요소 값 변경 방법, replaceAll()
  • Java - List를 콤마(,)로 연결하여 하나의 문자열 만들기
  • Java - delay, 몇 초 지연시키는 방법
  • Java - char를 ASCII 숫자 값으로 변환
  • Java - 16진수를 10진수로 변환
  • Java - 10진수를 16진수로 변환

codechachaCopyright ©2019 codechacha