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.974017605
1.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-07
2. 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-20
2.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+0900
2.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-23
Loading 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 - BufferedWriter로 파일 쓰기
- Java - BufferedReader로 파일 읽기
- Java charAt() 함수 알아보기
- Java - BigInteger 범위, 비교, 연산, 형변환
- 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 가져오기