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 - 리스트에서 최대, 최소 값 찾기
- Kotlin - for 반복문, 배열/리스트 순회
- Kotlin - Timer, 주기적으로 함수 실행
- Kotlin - sleep, 쓰레드 몇 초 지연
- Kotlin - Thread 생성 및 실행
- Kotlin에서 정규표현식 사용하기
- Kotlin - 문자열 길이 계산
- Kotlin - 문자열 비교 방법(equals, ==, compareTo)
- Kotlin - 2개의 배열 하나로 합치기
- Kotlin - 2개의 List 하나로 합치기
- Kotlin - 디렉토리의 모든 파일 리스트 출력
- 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을 Float으로 변환
- Kotlin - String을 Double으로 변환
- Kotlin - String을 Int로 변환
- Kotlin - String을 Long으로 변환
- Kotlin - String Null 또는 Empty 체크