Date에 날짜를 더하는 다양한 방법에 대해서 알아보겠습니다.
Date는 1970년을 기반으로 측정된 시간이기 때문에 Calendar를 이용하여 날짜 연산을 하였습니다.
현재 시간에 날짜 더하고 빼기
현재 시간을 갖고 있는 Date객체에 월, 일을 추가하는 코드입니다.
현재 Date를 Calendar에 설정하고 add()로 날짜 연산을 하였습니다. 날짜를 빼려면 음수를 넣으면 됩니다.
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
fun main(args: Array<String>) {
val cal = Calendar.getInstance()
cal.time = Date()
val df: DateFormat = SimpleDateFormat("yyyy-MM-dd")
println("current: ${df.format(cal.time)}")
cal.add(Calendar.MONTH, 2)
cal.add(Calendar.DATE, -3)
println("after: ${df.format(cal.time)}")
}결과
current: 2019-03-23
after: 2019-05-20특정 날짜에 더하고 빼기
위와 동일하지만 특정 날짜의 Date를 생성하는 것이 다릅니다. 이번에는 날짜 및 시간 연산도 하였습니다.
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
fun main(args: Array<String>) {
val cal = Calendar.getInstance()
val df: DateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
val date:Date = df.parse("2019-07-04T12:30:30+0530")
cal.time = date
println("current: ${df.format(cal.time)}")
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)
println("after: ${df.format(cal.time)}")
}결과
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.SimpleDateFormat
import java.util.*
fun main(args: Array<String>) {
val cal = Calendar.getInstance()
val df: DateFormat = SimpleDateFormat("yyyy-MM-dd")
cal.time = df.parse("2019-07-04")
val cal2 = Calendar.getInstance()
cal2.time = Date()
println("cal: ${df.format(cal.time)}")
println("cal2: ${df.format(cal2.time)}")
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))
println("after cal: ${df.format(cal.time)}")
println("after cal2: ${df.format(cal2.time)}")
}결과
cal: 2019-07-04
cal2: 2019-03-23
after cal: 4038-10-27
after cal2: 2019-03-23정리
Calendar를 이용하여 Date에 날짜 연산을 하는 방법에 대해서 알아보았습니다.
Loading script...
Related Posts
- Kotlin - 배열에서 최소 값, 최대 값 찾기
- Kotlin - 2차원 배열 선언, 초기화 방법
- Kotlin - 배열 선언, 초기화 방법
- Kotlin - 리스트에서 최대, 최소 값 찾기
- Kotlin - for 반복문, 배열/리스트 순회
- Kotlin - 리스트, 배열 길이 가져오기
- Kotlin - Timer, 주기적으로 함수 실행
- Kotlin - sleep, 쓰레드 몇 초 지연
- Kotlin - Thread 생성 및 실행
- Kotlin에서 정규표현식 사용하기
- Kotlin - 문자열 길이 계산
- Kotlin - 문자열 비교 방법(equals, ==, compareTo)
- Kotlin - 2개의 배열 하나로 합치기
- Kotlin - 디렉토리의 모든 파일 리스트 출력
- Kotlin - 2개의 List 하나로 합치기
- Kotlin - 리스트 정렬 방법 (sort, sortBy, sortWith)
- Kotlin - 문자열 뒤집기 (Reverse String)
- Kotlin - 랜덤 숫자 생성 (Random, SecureRandom)
- Kotlin - Range, 숫자 범위 표현
- Kotlin - 음수를 양수로 변환, math.abs()
- Kotlin - List를 Set로 변환
- Kotlin - Set를 List로 변환
- Kotlin - 문자열에서 숫자(int)만 추출하는 방법
- Kotlin - Map을 List로 변환하는 방법
- Kotlin - File, Directory가 존재하는지 확인
- Kotlin - List를 Map으로 변환
- Kotlin - List의 중복 요소 제거
- Kotlin - List를 Array로 변환
- Kotlin - 엘비스 연산자 (Elvis Operation)
- Kotlin - Array를 List로 변환
- Kotlin - String을 Double으로 변환
- Kotlin - String을 Float으로 변환
- Kotlin - String을 Int로 변환
- Kotlin - String을 Long으로 변환
- Kotlin - String Null 또는 Empty 체크