LocalData, LocalDateTime, Date 객체에 날짜/시간 정보를 더하거나 빼는 방법을 소개합니다.
1. LocalData, LocalDateTime을 이용한 방법
1.1 LocalDateTime에 날짜/시간 더하기, 빼기
LocalDateTime은 아래와 같은 메소드를 이용하여 시간/날짜를 더하거나 뺄 수 있습니다.
- plusMonths(), minusMonths()
- plusDays(), minusDays()
- plusHours(), minusHours()
- plusMinutes(), minusMinutes()
- plusSeconds(), minusSeconds()
import java.time.LocalDateTime;
public class Example {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
LocalDateTime result = now.plusYears(10)
.plusMonths(10)
.plusDays(10)
.plusHours(10)
.plusMinutes(10)
.plusSeconds(10);
System.out.println(result);
result = now.minusYears(10)
.minusMonths(10)
.minusDays(10)
.minusHours(10)
.minusMinutes(10)
.minusSeconds(10);
System.out.println(result);
}
}Output:
2022-12-18T09:28:45.974017605
2033-10-28T19:38:55.974017605
2012-02-07T23:18:35.9740176051.2 LocalDate에 날짜/시간 더하기, 빼기
LocalData은 아래와 같은 메소드를 이용하여 시간/날짜를 더하거나 뺄 수 있습니다.
- plusMonths(), minusMonths()
- plusDays(), minusDays()
import java.time.LocalDate;
public class Example {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
System.out.println(now);
LocalDate result = now.plusYears(10)
.plusMonths(10)
.plusDays(10);
System.out.println(result);
result = now.minusYears(10)
.minusMonths(10)
.minusDays(10);
System.out.println(result);
}
}Output:
2022-12-17
2033-10-27
2012-02-072. Date, Calendar를 이용한 방법
Calendar를 이용하여 Date 객체에 날짜/시간 정보를 더하거나 빼는 방법을 소개합니다.
2.1 현재 시간에 날짜 더하고 빼기
현재 시간을 갖고 있는 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()));
}
}Output:
current: 2019-03-23
after: 2019-05-202.2 특정 날짜에 더하고 빼기
위와 동일하지만 특정 날짜의 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()));
}
}Output:
current: 2019-07-04T16:00:30+0900
after: 2020-09-07T17:20:40+09002.3 날짜 두개 더하기
두개의 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()));
}
}Output:
cal: 2019-07-04
cal2: 2019-03-23
after cal: 4038-10-27
after cal2: 2019-03-23Loading script...
Related Posts
- Java - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedReader로 파일 읽기
- Java - BufferedWriter로 파일 쓰기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java charAt() 함수 알아보기
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기